マクロを無効にしてブックを開くマクロ
fileopenコマンドで、エクセルブックを開くとき、そのブックのマクロを無効にして開くコマンドを教えてください。マクロの記録でマクロを作ってみましたが、どちらで開いてみても同じコマンドしか記録されません。
回答(5件)
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示
No.5ベストアンサー20pt
#4>別のファイルを開くコマンド入れましたが、働いてくれません。
すみません、検証不十分でした。
マクロの実行からやると何回でもファイルを開けるということとAutomationSecurity に関するヘルプの記述から実行できると思っていました。
そのヘルプの記述によるとファイルを開いた後
マクロのレベルを戻すというようなサンプルの記述がありますが、実際には、このサンプルは動作しません。
バグであるとするのかは微妙な処ですが、
今、自分のマクロ実行を無効にしたので、マクロが実行できないのは当然とも言えます(じゃあ、なぜopenするマクロは動くのかという議論もあるかと思いますが)
それで、結論としては、マクロの実行中の文(センテンス)からこれを戻す方法はないように思えます。
すでに述べたように、マクロの実行ダイアログからは、マクロの実行はできるので、このレベルを変更する(戻す)ようなマクロを書くことで、レベルを戻すことはできますが、前の実行文の次から実行することは(面倒な機構をあらかじめ準備すれば別ですが)できません。
前置きが長くなってしまいましたが
それを回避するために
CreateObject("Excel.application")で
エクセルを別に起動することで
手続きを面倒にすることなく、概ね同様の手順でファイルを処理できると思います。
以下サンプル
Dim xl
Set xl = CreateObject("Excel.application")
xl.AutomationSecurity = msoAutomationSecurityForceDisable '別のアプリとしてのエクセルのマクロを無効にする
xl.Workbooks.Open Filename:="マクロを含むファイル1.xls"
MsgBox xl.Range("A1").Value 'そのファイルのセルにアクセスできる
xl.Workbooks.Open Filename:="マクロを含むファイル2.xls"
MsgBox xl.Range("A1").Value '次に開いたファイルにもアクセスできる、実際には、オブジェクトを分けたりした方が便利
xl.Quit 'もう一つのエクセルを終了させる、自動計算によって内容が変更されるようなファイルを開いた場合には、変更を保存しないでいいのか聞かれるがそういう場合は、あらかじめDisplayAlertsで抑制できる
Set xl = Nothing 'オブジェクトを解放しておく
この回答へのお礼
ご指導ありがとうございました。
この問題は、ファイルオープン時にUpdateLinks:=0のような簡単なパラメータで対処できない複雑な問題を含んでいることが良く分かりました。
マクロを無効化したいファイルの当該マクロ記述の冒頭に制御機能をつけることで、取り敢えず解決しました。
ありがとうございました。
ブックを開く前に次の一文を挿入して下さい
Application.AutomationSecurity = msoAutomationSecurityForceDisable
この回答への補足
ありがとうございました。
確かにこの1行を加えるとマクロが無効の状態で開くことができました。
しかしこれに続いて、別のファイルを開くコマンド入れましたが、働いてくれません。
この状態を解除するコマンドが必要なのではないでしょうか。
具体的には、こんな感じです。
***********
Sub Aopen()
Application.EnableEvents = False
Workbooks.Open "C:\Documents and Settings\marbin\デスクトップ\BookA.xls"
Application.EnableEvents = True
End Sub
************
この回答へのお礼
早速のお答えありがとうございます。
仰せのコマンド列をマクロに貼り付けて実験してみましたが、開かれたブックのマクロは有効でした。
マクロが無効になる開き方をしたいのですが・・・。
イベント禁止してから対象ののブックを
開いてください。
WorkBook_Openが無効になると思います。
この回答への補足
早速のお答えありがとうございます。
私のやりたいことは、マクロの一連の流れの中で、マクロを含むエクセルファイルを、マクロを無効にして開きたいのです。
なぜなら、そのブックのマクロが悪さをして、シート間のコピー貼り付けができなくなるからです。
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示











