2017-12-12 18 views
0

このように、VBAから外部の.exeファイルを呼び出す:Excel-VBAスクリプトから呼び出された.exeからエラーメッセージを閉じるにはどうすればいいですか?

Sub RunEXE() 
Dim wsh As Object 
SetCurrentDirectory "\\path\" 'Set Directory 
Set wsh = VBA.CreateObject("program.exe ""\\path\argument""", WindowStyle:=1, waitonreturn:=True) 

それがVBAから直接エラーウィンドウを閉じることは可能ですか?

コードはプログラムを呼び出して、.exeを正しく実行し、役立つすべてのデータを生成しますが、シートにデータを戻すためには、このウィンドウをokonする必要があります(waitonreturn = true以降)。

enter image description here

違反は、私は私のVBAコードから影響を与えないことができるものであるように思われるが、それは私が私のコードで必要な計算を行うために必要な.exeファイルのセクションに影響を与えていません。外部のソフトウェアのメモリアクセス違反の世界を掘り下げる代わりに、私はVBAコードから直接問題を解決することで問題を解決することを望んでいます。

私がこのエラーメッセージで大丈夫をクリックした場合、私のコードに関してはすべてが完璧です。エラーが発生したファイルを.exeで保存する必要はなく、必要なデータがすでに用意されています。

excel-VBAコードから外部ソフトウェアからエラーウィンドウを削除することはできますか?

注::エラーは、Excel自体からではなく、.exeプログラムから発生します。

+2

OKをクリックすると、プロンプトが表示されず、コードが自動的に[OK]ボタンを押します。 – Xabier

+0

エラーの出現が一貫していますか(毎回ポップアップしますか?) – JustinCoplin

+0

@JustinCoplinはい、エラーは毎回同じです。 VBAコードは、いくつかの計算を自動化するために.exeを複数回呼び出し、計算の各行に対してこのエラーが表示されます。アドレスは毎回同じです。 – Petrichor

答えて

2

これは、メモ帳を開いて、Enterキーをお送りしますのSendKeysの簡単な例である:私はこれはそれについて移動する最良の方法であると言うが、どのようにのSendKeysを使用してではないでしょう

Sub SendEnterToNotepad() 
    With Application 
     Shell "Notepad.exe", 3 
     SendKeys "{ENTER}" 
    End With 
End Sub 
+0

パーフェクト、ありがとう。また、AppActivateを使用して、他のいくつかの例で指摘しているように正しいプログラムに鍵を送るようにしています。 https://msdn.microsoft.com/en-us/vba/language-reference-vba/articles/appactivate-statement – Petrichor

+0

@Petrichor、あなたの答えがあなたに役立っている場合は、私の回答を回答としてマークしてください。ありがとうございました。 – Xabier

関連する問題