2017-10-18 15 views
0

私はプロジェクトのためにExcelでいくつかのVBAマクロを扱っています。マクロを使用してVBAマクロを開くときに、VBAマクロが他のExcelブックから起動しないようにする方法はありますか?例えば他のExcelシートからマクロを無効にする

、のは、私はいくつかの他のExcelファイルを開くには1つのワークブック内のマクロを持っているとしましょう:

Sheets("Sheet1").Select 
PathName = Range("D3").Value 
Filename = Range("D4").Value 
TabName = Range("D5").Value 
ControlFile = ActiveWorkbook.Name 
Workbooks.Open Filename:=PathName &; Filename 

私は通常、やったことは私はありませんことを保証するために、サブルーチンへApplication.EnableEvents = Falseが含まれています他のワークブックを開くとコードがトリガされます。これは、先にSO postによって提案された方法論でもあります。

しかし、二つの質問が頭に浮かぶ:

  1. が、これは "安全" となっていますか?イベントを無効にしても、アクティブなアプリケーションで実行される独自のマクロをユーザーが作成できる方法はありますか?

  2. イベントを完全に無効にすること以外の回避策がありますか?これはやや限定されているように見え、ほとんどが「お風呂に入って赤ちゃんを投げつけている」ようです。

+0

使用SQLワークシートからデータを取得するために...開いたファイルのためのVBAエディタのマクロモジュールを参照してくださいすることはできません – jsotola

答えて

1

これはマクロなしでファイルを開くように見え、読み取り専用です。これをテストする場合 、私も

Application.AutomationSecurity = msoAutomationSecurityForceDisable 
Workbooks.Open Filename:=strFilepath & strFilename, ReadOnly:=True 
Application.AutomationSecurity = msoAutomationSecurityByUI 
関連する問題