Функция оболочки странно работает в Excel vba

#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. Если проблема решена, отметьте ответ (в конечном итоге ваш) в качестве ответа, вместо того чтобы редактировать заголовок.