#excel #vba #shell
#преуспеть #vba #оболочка #excel
Вопрос:
Я создал кнопку, а затем поместил функцию оболочки под кнопку. Мои коды похожи на:
Private Sub CommandButton1_Click()
Shell (ThisWorkbook.Path amp; "ABC.exe")
End Sub
Функция .exe заключается в чтении файла .txt из того же каталога и записи нового файла .txt в тот же каталог.
Однако, когда я нажал на кнопку, новый текстовый файл был сгенерирован на рабочем столе, а не в текущем каталоге. А также, он не считывает правильный текстовый файл из каталога. Я попытался поместить файл .txt на рабочий стол и обнаружил, что .exe может затем прочитать его правильно!
Исполняемый файл отлично запускается из проводника. Когда я дважды щелкнул по ней, она может читать и записывать .txt в тот же каталог без каких-либо проблем.
Я знаю, этот вопрос звучит странно, есть ли у кого-нибудь какие-нибудь идеи по поводу этой проблемы? Любая помощь будет оценена, большое спасибо.
Ответ №1:
Оболочка («cmd / c» и эта рабочая тетрадь.Путь amp; «ABC.exe «)
Комментарии:
1. Спасибо за помощь! Но затем произошла ошибка времени выполнения ’53’, в которой говорилось «Файл не найден»
2. Ошибка времени выполнения ’53’: файл не найден» ошибка — вы уверены, что этот файл существует? Также убедитесь, что в ThisWorkbook.path нет пробелов
3. Файл существует без каких-либо проблем! Я действительно не знаю, как возникает ошибка.
4. @user1906523 если ваш вопрос решен, пожалуйста, отметьте галочкой ответ, который вас удовлетворяет 🙂
Ответ №2:
попробуй это:
s = "cmd /c " amp; ThisWorkbook.Path amp; "ABC.exe"
Debug.Print s
Shell (s)
возможно, вы что-то пропустили
Ответ №3:
Проблема решена! Я использовал Chdir и Chdrive для указания каталога по умолчанию, .exe теперь работает отлично. В любом случае, спасибо за помощь 🙂
Комментарии:
1. Если проблема решена, отметьте ответ (в конечном итоге ваш) в качестве ответа, вместо того чтобы редактировать заголовок.