新しく質問する

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

役に立った:0件
  • 質問者:miwaki
  • 投稿日時:2004/11/12 09:49
  • 困り度:すぐに回答が欲しいです
  • 友達に紹介
  • ブログに書く
  • 教えて!gooお気に入り

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

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:0件)
  • 参考になった:0件

No.5ベストアンサー20pt

  • 回答者:BLUEPIXY
  • 回答日時:2004/11/13 14:13

#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のような簡単なパラメータで対処できない複雑な問題を含んでいることが良く分かりました。
マクロを無効化したいファイルの当該マクロ記述の冒頭に制御機能をつけることで、取り敢えず解決しました。
ありがとうございました。

  • 参考になった:0件
  • 回答者:BLUEPIXY
  • 回答日時:2004/11/12 22:38

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

通報する

この回答への補足

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

  • 参考になった:0件
  • 回答者:marbin
  • 回答日時:2004/11/12 12:16

う~ん、こちらで試したときはマクロが
無効になったのですが・・・。

他の方の回答をお待ちください。

通報する

  • 参考になった:0件
  • 回答者:marbin
  • 回答日時:2004/11/12 10:32

具体的には、こんな感じです。

***********
Sub Aopen()
Application.EnableEvents = False
Workbooks.Open "C:\Documents and Settings\marbin\デスクトップ\BookA.xls"
Application.EnableEvents = True
End Sub
************

通報する

この回答へのお礼

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

  • 参考になった:0件
  • 回答者:marbin
  • 回答日時:2004/11/12 10:23

イベント禁止してから対象ののブックを
開いてください。

WorkBook_Openが無効になると思います。

通報する

この回答への補足

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

  
このQ&Aは役に立ちましたか?(役に立った:0件)

このページのトップへ

Facebook公式ページ

公式Twitter