Definindo diretórios e a declaração If Len (Dir (… no VBA

Eu tenho um arquivo existe neste caminho:

//path/folder1/folder2/datafile.gdp

É uma entrada para um programa externo que está sendo chamado do vba desta maneira:

Sub RunProgram()
Dim wsh As Object
SetCurrentDirectory "\\path\"
ChDir "\\path\folder1\folder2\" 'Set Directory
Set wsh = VBA.CreateObject("WScript.Shell")
check = CurDir
Statusnum = wsh.Run(Command:="program.exe ""\\path\folder1\folder2\datafile.gdp""", WindowStyle:=1, waitonreturn:=True)

Mas, na linha final, incluindo \ path \ folder1 \ folder2 \ antes que o nome do arquivo de entrada pareça fazer com que o programa externo queira gravar alguns arquivos em um diretório duplicado que não existe, causando um erro. Ele costumava funcionar nesse formato antes que o .exe fosse atualizado por uma empresa externa. Agora, ele deseja escrever alguns arquivos aqui, todos prefixados com o nome do meu arquivo de entrada:

\\path\folder1\folder2\PATH\FOLDER1\FOLDER2\

Na esperança de corrigir isso, mudei a linha final do código para isso, seguindo alguns comentários em um post anterior aqui no SO:

Statusnum = wsh.Run(Command:="program.exe ""datafile.gdp""", WindowStyle:=1, waitonreturn:=True)

Como o diretório está definido corretamente antes de chamar o .exe, pensei que remover o caminho do arquivo de entrada resolveria o problema.

O programa agora é iniciado, mas não parece carregar o arquivo de entrada e não executa mais os cálculos automaticamente em segundo plano, como deveria. Em vez disso, ele é iniciado e a janela principal .exe aparece para o usuário como se tivesse sido lançada para a configuração de um novo projeto, os cálculos não ocorrem automaticamente.

Para verificar em qual diretório o código VBA tentou extrair meu datafile.gdp, criei esses loops diretamente antes de chamar o .exe:

If Len(Dir("\\path\folder1\folder2\datafile.gdp")) = 0 Then
    FileIsMissing1 = True 'I use Excel-VBA watches to break if true
End If

If Len(Dir("datafile.gdp")) = 0 Then
    FileIsMissing2 = True 
End If

Estranhamente, nenhum desses loops causa uma interrupção. O arquivo existe apenas em

\\path\folder1\folder2\datafile.gdp

Não está no diretório duplicado ... então, por que essas duas instruções são satisfeitas? A entrada no diretório não faz diferença, mesmo quando o diretório atual foi definido? O diretório atual parece estar impactando a linha:

Statusnum = wsh.Run(Command:="program.exe ""\\path\folder1\folder2\datafile.gdp""", WindowStyle:=1, waitonreturn:=True)

Mas não esses se loops, e não sei por que.

questionAnswers(0)

yourAnswerToTheQuestion