Следующее должно дать вам эффект, который вы ищете.
Мой тестовый код:
Option Explicit
Sub TryShell()
Dim PathCrnt As String
PathCrnt = ActiveWorkbook.Path
Call Shell(PathCrnt & "\TryShell.bat " & PathCrnt)
End Sub
Мой тестовый пакетный файл называется TryShell.bat и содержит:
cd %1
dir *.* >TryShell.txt
Я поместил свой пакетный файл в ту же папку, что и рабочая книга, содержащая мой макрос.
Оператор PathCrnt = ActiveWorkbook.Path
устанавливает PathCrnt в качестве имени каталога, содержащего активную рабочую книгу.Вы можете установить PathCrnt в любой каталог, который вам требуется.
Когда я вызываю Shell
, я добавил PathCrnt
в качестве параметра.
В моем пакетном файле я установил текущий каталог на%1
, который является первым параметром.
Команда dir
работает так, как я хочу, потому что текущий каталог - это мой каталог, а не системный каталог по умолчанию.
Надеюсь, это понятно.