2013-04-30 11 views
8

VBAを使用してスプレッドシートを開き、Workbook_Open()が呼び出されたときに実行を開始するコードが2つのブックに含まれています。VBAからブックを開き、Workbook_Open()コードを無効にしますか?

VBAを使用してブックを開くことはできますが、コードは自動的に実行されなくなりますか?シート内の数式を見るためにワークブックを開くだけです。私はコードを実行したくありません。

+0

マクロセキュリティを常に設定して、すべてのマクロをブロックすることができます。これはおそらく理想的ではありませんが、あなたが求めていることを行うべきです。 – Gaffi

答えて

10

あなたは、モジュールの残りのためにそれらをVBAでブックを開くと、その後再度有効前イベントを無効にを試してみたいですか?

Application.EnableEvents = False 'disable Events 
workbooks.Open "WORKBOOKPATH"  'open workbook in question 
Application.EnableEvents = True 'enable Events 
+0

これがうまくいかない場合は、これを回避するもう1つの方法は、モジュール内でグローバルブール値を宣言し、Workbook_Open()コードを実行するかどうかをtrueまたはfalseに設定することです。 If()ステートメントを追加して、Workbook_Open()サブのブール値をチェックする必要があります。 – dnLL

+1

または 'Application.AutomationSecurity'を使って調べてください –

+0

マクロはまだ有効であり、EnableEventsが再び有効にされた後にトリガーされると思います。 – Tuntable

0

Application.EnableEventsとワークブック特定Application.EnableEventsの組み合わせは素晴らしい作品:このようなものを使用してみてください。ワークブックが再参照されると(セルのコピーなど)、アクティブ化イベントが再トリガされます。ワークブックは、最初に終了しているので、この試す閉じた後にアクセスすることがカント:ここ

Dim wb as Workbook 
Application.EnableEvents = False 
Set wb = workbooks.Open "YOURWORKBOOKPATH" 
Application.EnableEvents = True 
wb.Application.EnableEvents = False 

**Code** 

wb.Application.EnableEvents = True 
wb.Close 
+2

"Workbook specific Application.EnableEvents"のようなものはありません。 wb.Application = Application – MGM

5

VBA

Start Excel Application > Go to File > Recent >

enter image description here

外で開くための別の方法を

Shiftキーを押しながらダブルクリックしてオープン -

が稼働してから焼成し、Auto_OpenマクロからWorkbook_Openイベントを防ぐことができますこれを行います。

Shiftキーを押しながらダブルクリックすると、ブックが開きます。

+0

彼はVBAコードから開くことについて尋ねました。はるかに困難な質問。 – Tuntable

3

これは他の回答ではっきりと言及されていませんでしたが、私はApplication.AutomationSecurityが必要なものを正確に行うことがわかりました。基本的に

Application.AutomationSecurity = msoAutomationSecurityByUI 
'This is the default behavior where each time it would ask me whether I want to enable or disable macros 

Application.AutomationSecurity = msoAutomationSecurityForceDisable 
'This would disable all macros in newly opened files 

Application.AutomationSecurity = msoAutomationSecurityLow 
'This would enable all macros in newly opened files 

コードを実行した後も、設定をデフォルトの動作に戻すことはできませんので、再度変更する必要があります。したがって、この質問のために

Application.AutomationSecurity = msoAutomationSecurityForceDisable 
' Your code 
Application.AutomationSecurity = msoAutomationSecurityByUI 
関連する問題