• ベストアンサー

VBA マクロ付きExcelファイルを無効で開く

タイトルの通り、マクロを含むExcelファイルを、マクロ無効でオープンしたいのですが、そういうことは出来るでしょうか? 新規ファイル作成.xlsというマクロがあって、temp.xlsというマクロを含んだファイルをnew.xlsというファイル名でコピーし、それをオープンしてデータを追加して終了。 次にそのnew.xlsをオープンした時にはtemp.xlsに含まれるマクロが実行される・・・ というようなことをしたいと思っています。 もしくは新規ファイル作成.xlsのマクロから、直接new.xlsのファイルにコーディングが可能であれば、それでも良いのですが・・・ データベースから表を作成し、作成後の変更データを再度データベースへ戻す、ということがやりたいのですが、上記の方法しか思いつきません。 もし上記の方法が出来ない場合は、別の方法がありますでしょうか? どなたかアドバイス、よろしくお願いします。

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

#1の方への補足から、B.xls の WorkBook_Open に UserFormを開くイベントがあり、マクロから B.xls を開いた場合は実行したくないって事だと判断しました。 意味が違ったら読み飛ばしてください。Excel97で確認してます。 A.xls と B.xls が同じフォルダ内にあるとして Sub Test() Dim motoB As String, copyB As String, wb As Workbook  motoB = ThisWorkbook.Path & "\B.xls"  copyB = ThisWorkbook.Path & "\New.xls"  FileCopy motoB, copyB       'B.xlsをコピー  Application.EnableEvents = False 'イベントを一時無効化  Set wb = Workbooks.Open(copyB)  'B.xlsのコピーを開く  Application.EnableEvents = True  'イベントを有効に戻す  'ここから  wb.Worksheets(1).Range("A1") = Now  wb.Save  wb.Close  'ここまではサンプルとして適当な処理 End Sub また、別の方法として B.xls の WorkBook_Open を止めて、標準モジュールに Sub Auto_Open()  UserForm1.Show End Sub のようにすると A.xls 側で EnableEvents を使わなくても Auto_Open は実行されません。

sky_blue
質問者

お礼

お礼が遅れて申し訳ありません! はい、papayukaさんが冒頭で言われている事をしたいと思っていました。 EnableEventsというプロパティ?は知りませんでした。 これが処理を止める方法なのですね。 助かりました、ありがとうございました。

その他の回答 (1)

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

すいません。何をされたいのか良く理解できないのですが。 とりあえず、new.xlsというファイルが開かれる時に マクロが実行されたりされなかったりを選択したいということであるなら どこかのセルに値を書いておけばよいんじゃないかなと。 Openイベントでその値を読み込み 0ならマクロ発動、1なら何もしない。 まぁこれでもマクロは実行はされていますがw

sky_blue
質問者

補足

分かりにくい説明で申し訳ありません! 一言で言えば「マクロを含む新規Excelファイルを作成する」マクロを作成したいということなんです。 A.xlsというマクロがあって、これはB.xlsというマクロを作るマクロです。 ですので結局、A.xlsでB.xlsを作成する時に、マクロを記述できる方法があれば、それでも構わないんですが、それも分からなくて・・・ それで最初からB.xlsのマクロを用意しておいて、A.xlsでは、そのマクロをコピーするだけにしようと思っていたのですが、B.xlsのマクロは有効で開くとフォームが出力されるようになっています。 現状では、A.xlsからB.xlsのデータを処理しようとファイルを開いてもマクロが有効になってフォームが出力されてしまうんです・・・それを解消する方法はないかと、マクロからマクロを無効で開く方法はないかと思いました。 こんな説明でお分かり頂けるでしょうか・・・ (なんだか書けば書くほど分かりにくくなってきたような気がします・・・すみません) また何かありましたら、よろしくお願いします。 ありがとうございました。

関連するQ&A