I am running a C++ program through my VB code, and I am having trouble getting my code to run on a shared drive vs. on a local computer. My program generates a set of assumptions, then runs those assumptions through a C++ model, then picks up the model output and prepares it for viewing in the VB workbook.
The code below works fine when I have the workbook saved in a local directory on my C drive, but when I upload it to my company's shared drive, I get the following error:
"Run-time error '-2147024894 (80070002)': Method 'Run' of object 'IWshShell3' failed"
Code:
'---------------------------------------------------------
' SECTION III - RUN THE MODEL AS C++ EXECUTABLE
'---------------------------------------------------------
Dim ModelDirectoryPath As String
Dim ModelExecutableName As String
Dim ModelFullString As String
' First build the command string
Application.StatusBar = "Running C++ Model..."
ModelDirectoryPath = Range("ModelFilePath").value
ModelExecutableName = Range("ModelFileName").value
ModelFullString = ModelDirectoryPath & ModelExecutableName
ModelFullString = ModelFullString & " " & ScenarioCounter & " " & NumDeals _
& " " & ModelRunTimeStamp & " " & Settle_YYMMDD
' Run the program
Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 1
Dim errorCode As Integer
errorCode = wsh.Run(ModelFullString, windowStyle, waitOnReturn)
If errorCode = 0 Then
' MsgBox "C++ Model Completed without Errors."
Else
MsgBox "Program exited with error code " & errorCode & "."
End If
Application.StatusBar = "C++ Model Complete"
Any thoughts?
The error does come from the directory having a space in it:
A simple workaround does the trick:
Chr(34)
is a double quote.There was an issue with
.Run
taking a two line property.Tested it on Excel 2010/Win32.
I have determined that the problem appears entirely due to the directory structure including a space. There does not appear to be any issue relating to the local vs. shared directory.
If someone knows an easy fix to get around the directory having a space in it, please let me know!
found this great reference explaining triple quotes when there is a space in the path. Here is a portion of it in case it gets taken down or moves:
I have noticed that the problem only seems to occur when more than one argument is passed on to the program/script that is run.
If the second argument contains a filepath with a space, even when the necessary """" are present, the error occurs.
Can't find any solution at this point...
Had the same problem, alternative solution:
Key point being to set the CurrentDirectory property of the shell