2014-11-25 4 views
1

Итак, я создал файл .exe (tlsolver.exe) для запуска с использованием VBA (TLSolver.xlsm). Когда я запускаю .exe, он запускает некоторые вычисления, выплевывает файл csv, а затем я использую VBA для копирования этих данных на лист excel.Запуск .exe с использованием VBA

Это код VBA Я использую:

Public Sub StartExeWithArgument() 
    Dim strProgramName As String 

    ActiveWorkbook.Save 
    strProgramName = "C:\Users\My.Name\Desktop\Python\Tagless\tlsolver.exe" 

    Call Shell("""" & strProgramName & """", vbNormalFocus) 
End Sub 

При запуске макроса, то выскочит окно консоли, как должно, а затем быстро закрывается. Мне удалось увидеть эту ошибку перед закрытием:

IOError: [Errno 2] No such file or directory: 'TLSolver.xlsm' 

Я знаю, что .exe отлично работает, когда я двойной щелчок мышью на файле регулярно, поэтому я склонен думать, что я Мессинг что-то глупое в VBA ,

Любая помощь оценена!

Редактирование: я знаю, что sub обозначается как StartExeWithArgument, но аргумента не требуется, просто нажмите и запустите.

+0

Быстрый вопрос ... Почему вы получаете сообщение об ошибке 'Нет такого файла или каталога:«TLSolver.xlsm'' почему '.xlsm '? Разве это не должно быть .exe? –

+0

Давайте продолжим обсуждение в чате (http://chat.stackoverflow.com/rooms/65643/discussion-between-ploo-and-siddharth-rout). – ploo

+1

Обсуждение чата: exe запускается правильно с VBA. Exe был создан с использованием python и не может читать файл .xlsm. –

ответ

3

Команда оболочки выполняется правильно. Запускается exe, а затем ищет файл .xlsm в текущем пути. То, что происходит в том, что он не в состоянии найти TLSolver.xlsm в текущей директории и, следовательно, ошибки IOError: [Errno 2] No such file or directory: 'TLSolver.xlsm'

Три предложения в таком случае.

  1. Изменение каталога в VBA с помощью ChDir в каталог, где находится файл Excel проживает, а затем запустить ехе ИЛИ

  2. Поместите оба файла в том же каталоге. ИЛИ

  3. Перепишите код питона ехе (Это падает из моего опыта, так не может помочь вам здесь) предложит пользователю выбрать файл Excel.

VBA ЧАСТЬ (Предложение 1)

Public Sub StartExeWithArgument() 
    Dim strProgramName As String 
    Dim xlFilePath As String 

    '~~> Path of the excel file. Change as applicable 
    xlFilePath = "C:\Temp" 

    ActiveWorkbook.Save 

    '~~> Change directory 
    ChDir xlFilePath 

    strProgramName = "C:\Users\My.Name\Desktop\Python\Tagless\tlsolver.exe" 

    Call Shell("""" & strProgramName & """", vbNormalFocus) 
End Sub 
+0

Сид, ты спас мне здравомыслие. Спасибо, код VBA работал! – ploo

+0

Awesome :) Приношу свои извинения за то, что так долго. На самом деле я неправильно прочитал сообщение об ошибке в начале. –

+0

, случается, с той же проблемой, я изменил код VBA, как это, но все же он не работает ... любая идея почему? если я запускаю .exe напрямую, тогда он может читать файл xlsm ... – ilovecp3

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