Запуск .exe с использованием VBA

1

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

Это код 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
    Быстрый вопрос ... Почему вы получаете сообщение об ошибке No such file or directory: 'TLSolver.xlsm' почему .xlsm ? Разве это не должно быть .exe ?
  • 0
    Давайте продолжим эту дискуссию в чате .
Показать ещё 1 комментарий
Теги:
excel-vba
excel
exe

1 ответ

3
Лучший ответ

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

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

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

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

  3. Перепишите код exe python (это выходит из моего опыта, поэтому не может помочь вам здесь), чтобы предложить пользователю выбрать файл 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 сработал!
  • 0
    Круто :) Мои извинения за то, что так долго. Я на самом деле неправильно прочитал сообщение об ошибке в начале.
Показать ещё 9 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню