2017-12-12 3 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를 올바르게 실행하여 유용하지만 내 시트로 데이터를 가져 오려면이 창을 닫아야합니다 (waitonreturn = true 이후).

enter image description here

위반은 내 VBA 코드에서 영향을 미칠 수없는 무언가 것으로 보인다,하지만 난 내 코드에 의해 요구되는 계산을하기 위해 필요한 .EXE의 부분에 영향을하지 않습니다. 외부 소프트웨어에 대한 메모리 액세스 위반의 세계를 탐구하는 대신 VBA 코드에서 직접 확인하여 문제를 해결할 수 있기를 바랍니다.

오류 메시지에서 아무 것도 클릭하지 않으면 내 코드에 관한 모든 것이 완벽합니다. 오류가 발생하는 파일을 저장하려면 .exe가 필요하지 않으며 필요한 데이터가 이미 있습니다.

excel-VBA 코드에서 외부 소프트웨어의 오류 창을 닫을 수 있습니까?

참고 : 오류는 .exe 프로그램에서 발생하며 Excel 자체에서 발생하는 것은 아닙니다.

+2

나는이 그것에 대해 이동하는 가장 좋은 방법이지만, 방법에 SendKeys 매크로를 사용하는 방법에 대해 언급하지 않았다 확인을 클릭하면 프롬프트가 나타나지 않고 코드가 자동으로 확인 버튼을 누를 것입니다. – Xabier

+0

오류가 모양에 일관성이 있습니까 (매번 팝업됩니까?)? – JustinCoplin

+0

@JustinCoplin 예, 오류는 매번 동일합니다. VBA 코드는 .exe를 여러 번 호출하여 일부 계산을 자동화하고 모든 계산 행에 대해이 오류가 나타납니다. 주소는 매번 동일합니다. – Petrichor

답변

2

이 메모장을 열고 다음 Enter 키를 보내드립니다 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

관련 문제