• ベストアンサー

マクロを無効にしてブックを開くマクロ

fileopenコマンドで、エクセルブックを開くとき、そのブックのマクロを無効にして開くコマンドを教えてください。マクロの記録でマクロを作ってみましたが、どちらで開いてみても同じコマンドしか記録されません。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

#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 'オブジェクトを解放しておく

miwaki
質問者

お礼

ご指導ありがとうございました。 この問題は、ファイルオープン時にUpdateLinks:=0のような簡単なパラメータで対処できない複雑な問題を含んでいることが良く分かりました。 マクロを無効化したいファイルの当該マクロ記述の冒頭に制御機能をつけることで、取り敢えず解決しました。 ありがとうございました。

その他の回答 (4)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

ブックを開く前に次の一文を挿入して下さい Application.AutomationSecurity = msoAutomationSecurityForceDisable

miwaki
質問者

補足

ありがとうございました。 確かにこの1行を加えるとマクロが無効の状態で開くことができました。 しかしこれに続いて、別のファイルを開くコマンド入れましたが、働いてくれません。 この状態を解除するコマンドが必要なのではないでしょうか。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.3

う~ん、こちらで試したときはマクロが 無効になったのですが・・・。 他の方の回答をお待ちください。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.2

具体的には、こんな感じです。 *********** Sub Aopen() Application.EnableEvents = False Workbooks.Open "C:\Documents and Settings\marbin\デスクトップ\BookA.xls" Application.EnableEvents = True End Sub ************

miwaki
質問者

お礼

早速のお答えありがとうございます。 仰せのコマンド列をマクロに貼り付けて実験してみましたが、開かれたブックのマクロは有効でした。 マクロが無効になる開き方をしたいのですが・・・。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

イベント禁止してから対象ののブックを 開いてください。 WorkBook_Openが無効になると思います。

miwaki
質問者

補足

早速のお答えありがとうございます。 私のやりたいことは、マクロの一連の流れの中で、マクロを含むエクセルファイルを、マクロを無効にして開きたいのです。 なぜなら、そのブックのマクロが悪さをして、シート間のコピー貼り付けができなくなるからです。

関連するQ&A