你可以设置你的VB的.exe返回的退出代码。只要确保id不是0(表示运行成功)或259(调用进程会认为进程仍在运行)。下面的VBA运行一个.exe,等待它关闭,然后返回退出代码。
Option Explicit
' Api declarations
Private Declare Function GetExitCodeProcess Lib "Kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Function OpenProcess Lib "Kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
Public Function RunProgram(ByVal strFilename As String) As Long
'# PURPOSE: Run a program, wait until closed, and return the exit code
Dim TaskID As Long
Dim hProc As Long
Dim lExitCode As Long
Const ACCESS_TYPE = &H400
Const STILL_ACTIVE = &H103
' Open the program
TaskID = Shell(strFilename, 1)
hProc = OpenProcess(ACCESS_TYPE, False, TaskID)
If Err <> 0 Then
Debug.Print "Cannot start " & strFilename, vbCritical, "Error"
Exit Function
End If
' Wait until program is closed
Do
GetExitCodeProcess hProc, lExitCode
DoEvents
Loop While lExitCode = STILL_ACTIVE
' Return the program's exit code
RunProgram = lExitCode
End Function
你可以阅读[的StdOut(https://msdn.microsoft.com/en-us/library/cbxxzwb5(V = vs.84)的.aspx) –
你有没有考虑写你的VB.Net代码作为一个COM对象库?这样你就可以在VBA代码中创建一个VB.Net类的实例,然后在该实例上调用一个函数来返回所需的值。请参阅:[演练:使用Visual Basic创建COM对象](https://msdn.microsoft.com/en-us/library/x66s8zcd(v = vs.110).aspx) – TnTinMn