2016-08-23 12 views
0

私は時々実行しているvbs/vbaスクリプトをいくつか持っています。しかし、次のvbscriptが進行中で、別のvbaまたはvbscriptが実行されているのは望ましくありません。Windowsでvbaスクリプトをチェックする方法は実行中ですか?

Set objSWbemServices = GetObject ("WinMgmts:Root\Cimv2") 
Set colProcess = objSWbemServices.ExecQuery _ 
("Select * From Win32_Process where name = 'wscript.exe'") 
Do While colProcess.Count > 1 
    WScript.Sleep 10000 
    Set colProcess = objSWbemServices.ExecQuery _ 
    ("Select * From Win32_Process where name = 'wscript.exe'") 
Loop 

しかし、私はExcelで実行されているVBAスクリプトの特定のプロセスを見つけることができません。そこに別のVBScriptが実行されているかどうかを決定し、現在のVBScriptの実行を遅延しても問題はありません。 vbaスクリプトが実行されている場合、どのようにvbscriptをチェックインできますか?

+1

おそらく、Excelが重要なCPUを消費していて、それが起きているときにVBScriptを実行していないかどうかを確認できます。それは簡単ではないようですが、Task Managerで取得したCPU使用率のVBScriptをGoogleで検索できます。これは、VBAスクリプトが実行されているときにExcel用に起動します。 –

+0

ありがとうございます、それは価値のあるアイデアです。ただし、vbaでWait関数を使用すると問題が発生する可能性があります。 –

+1

それは確かにハックのあるアイデアですが、測定可能なものをテストすることは、そうでないものに対処する唯一の方法です。 VBScriptマクロとVBAマクロの両方の作者であれば、VBAマクロは、開始時と終了時にフラグを(ログファイルまたはレジストリ内で)発生させることができます。スクリプトはフラグをチェックするだけです。 –

答えて

1

私が知る限り、ExcelのVBAはWindowsオペレーティングシステムでは別のプロセスとして実行されません。

CommandLine列を特定のスクリプト名に一致させることで、vbscriptのWSH/WScript/CScriptプロセスを見つけることができます。

+0

あなたの答えをありがとう。私は特定のスクリプト名を見つける必要はありません。私の場合は数えても十分です(2つのスクリプトの実行が重なっている可能性があります)。 Excelのファイル名とのマッチングはオプションではありません。 –

+0

Excelは一度に2つのVBAを実行させることもできますか?マクロを2つの別々のボタンに結びつけると仮定しても、それをクリックすると処理に時間がかかり、2番目のマクロをクリックするとそのマクロを実行できるようになりますか? – SandPiper

+0

@SandPiper質問は、* VBScript *が* VBA *プログラムが動作しているかどうかを確認する方法です。 VBAスクリプトがExcelで実行されているときに、VBScriptインタプリタでVBScriptスクリプトを実行することに問題はありません。 –

関連する問題