- ベストアンサー
マクロでマクロを削除、または停止させるには?
1つのExcelファイルからマクロを走らせて、複数のExcelファイルにあるデータを集めたいと思っています。 ただ、複数のExcelファイルは、ファイルを閉じる際にマクロが走るようになっているので、このマクロが走らないようにして、データを集めたいです。 そこで、実現したいのは、1つのExcelファイルから集計用のマクロを走らせる時に、複数のExcelファイルに設定してあるマクロを削除するか、あるいは、マクロを停止させたいです。 ちなみに、複数のExcelファイルを開いた後、閉じないことにより、マクロを走らせないようにして、集計を行うマクロを試しましたが、開いたままのファイル数が多いようで、途中でエラーが出て止まってしまいます。 アドバイスをお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
参考URLは、以前に、回答した内容ですが、 マクロのあるファイルをマクロを無効にして開く方法です。 この手法が使えるかもしれません
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 もう締められたかと思いましたが、 >処理の前に >Application.EnableEvents = False >そして、閉じる処理の後に >Application.EnableEvents = True >と書きました。 >これで希望する動作となりました。 マクロに手を加えてよいのなら、そんな面倒なことをせずに、 Private ThisWorkbook_Open() ---------------2行目に、Exit Sub か、End を入れればよいです。 | End Sub
補足
ご返答ありがとうございます。 マクロに手を加えてよいのは、データが集まる1つのExcelファイルです。 集計の元となる複数のExcelファイルは、ファイル数が多いため、マクロに手を加えることは考えておりません。 EnableEventsは、1つのExcelファイルのマクロに加えました。 マクロの動きを具体的に申し上げます。1つのExcelファイル側のマクロを走らせると、同階層にある複数のExcelファイルを一つずつ開いて、必要なデータをコピーし、1つのExcelファイル側にペーストします。そして、複数のExcelファイルを閉じます。この閉じる処理のときに、複数のExcelファイル側のマクロが走ってしまうのです。そこで、1つのExcelファイル側に書かれたマクロの閉じる処理にEnableEventsを加えて、複数のExcelファイル側のマクロが走るのを止めました。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 通常は、起動時のマクロを中止させるのは、Shiftキーを押しながら、ブックを選択して開きます。 ただ、セキュリティレベルを変更するのでしたら、マクロ-セキュリティを「高」または、「最高」にする、のと、信頼のおけるソース元側の「すべての組み込み済みのアドインとテンプレートを信頼する」を外せば完璧です。 なお、マクロでマクロをセキュリティレベルを変える方法は、.AutomationSecurity は、2002 以上ですね。 こちらをご覧になってください。 Excel の起動方法を指定する ヘルプ
お礼
アドバイスありがとうございます。 さて、AutomationSecurityですが、これでマクロを無効にすると、その後の必要なマクロまで無効となってしまいます。 今回は、EnableEventsを使うことで、必要なマクロを生かしたまま、ファイルを閉じる際に走るマクロを止めることができました。
お礼
エクセルを別に起動するという方法はとても参考になりました。ありがとうございます。 ただ、私の乏しい知識では少し複雑に思えましたので、別の方法で対処しました。ファイルを閉じる際にマクロが走らないように、閉じる処理の前に Application.EnableEvents = False そして、閉じる処理の後に Application.EnableEvents = True と書きました。 これで希望する動作となりました。