2014-12-31 2 views
0

Как программировать в excel VBA для запуска внешней программы, когда внешняя программа может выводить данные, собранные в файл? Моя внешняя программа, напряжение.exe, при нормальной работе (дважды щелкните программу на экране рабочего стола) выведет данные, собранные в файл data.txt. Однако при запуске с моим кодом ниже файл data.txt не создавался.Как запустить файл .exe с созданием файла?

Sub Button1_Click() ' run logger 
Dim path As String 
path = ActiveWorkbook.path 
path = path + "\Voltage Recording.exe" 
retval = Shell(path, vbNormalFocus) 
End Sub 
+0

Think ваша программа будет запущена с текущий рабочий каталог вызывающего абонента, в данном случае Excell. Я не уверен, что команда Shell установила CWD в путь рабочей книги, вы можете использовать «Shell (« c: \ windows \ system32 \ cmd.exe », vbNormalFocus)», чтобы увидеть, где запущена оболочка, и подтвердить, что ваш файл был создан там например. – Tensibai

+0

'Shell' не ждет завершения вызова вызываемой программы перед возвратом. «Data.txt» никогда не создавался или просто не был к тому времени, когда ваш макрос пытается его прочитать? –

+0

@TonyDallimore data.txt никогда не создавался. – Deckdyl

ответ

2

файл создается в текущем каталоге, то вы можете получить свой путь по специальности: CurDir() вы можете изменить текущий каталог, вызвав SetCurrentDirectory функцию:

Declare Function SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long 
Sub Button8_Click() 
    MsgBox ("Old Dir = " & CurDir()) 
    SetCurrentDirectory ActiveWorkbook.path 
    MsgBox ("Current Dir = " & CurDir()) 
    Dim path As String 
    path = ActiveWorkbook.path 

    path = path + "\Voltage Recording.exe" 
    MsgBox (path) 
    retval = Shell(path, vbNormalFocus) 

End Sub 
+0

Файл с подсказкой не найден. – Deckdyl

+0

@Deckdyl: Я изменил ответ, чтобы показать путь к файлу, проверьте, существует ли он. – houssam

+0

Спасибо, сейчас работает. = D – Deckdyl

Смежные вопросы