Запуск.exe напрямую и через Shell VBA, возвращая разные результаты

Когда я нажимаю непосредственно в.exe-файле "PrintUsers.exe", вывод правильный. Но когда я делаю это через VBA, используя Shell, результат будет другим. Он пытается найти текстовый файл в другом каталоге. Зачем? Смотрите рисунок:

фигура

РЕШЕНИЕ: сейчас я использую: GetModuleFileName(NULL, szEXEPath, 2048) вместо GetCurrentDir(buff, FILENAME_MAX);

2 ответа

Решение

РЕШЕНИЕ: сейчас я использую: GetModuleFileName(NULL, szEXEPath, 2048) вместо GetCurrentDir(buff, FILENAME_MAX);

Похоже, что PrintUsers.exe ожидает найти файл doNotEdit.txt в текущем каталоге.

Лучшее решение состоит в том, чтобы изменить эту программу для поиска файла в том же каталоге, в котором находится сама программа, но, если это невозможно, заставить Excel изменить текущий каталог перед запуском программы, т.е. вставить

ChDir ActiveWorkbook.Path

до вызова Shell,


Кроме того, как упомянул Яхья Хусейн в комментарии, пробелы внутри путей могут вызвать проблемы. В вашей конкретной ситуации их нет, но, чтобы у вас не было проблем в будущем, рассмотрите возможность использования чего-то вроде

myFile = """" & ActiveWorkbook.Path & "\PrintUsers.exe"""
ChDir ActiveWorkbook.Path
Shell myFile, vbNormalFocus
Другие вопросы по тегам