Запуск пакетного файла в заданном каталоге с использованием VBA - PullRequest
8 голосов
/ 23 февраля 2012

Когда я захожу в местоположение моего пакетного файла и открываю его, пакетный файл работает.Мой пакетный файл просто:

cd .\data
dir/b/o:n > names.txt

Как видите, я нахожусь в моем текущем каталоге и перехожу к подкаталогу «data», копирую все имена и создаю файл с именем names.txt.

Когда я говорю

shell "location of file" 

, он открывает пакетный файл, но по умолчанию используется каталог C:\my documents, поэтому мои команды не будут работать, поскольку он не может найти подпрограмму.каталог.Я хочу, чтобы это был динамический пакетный файл, и поэтому мне нужно написать что-то в VBA, которое откроет пакетный файл в его текущем каталоге или что-то в этом роде.

Как мне это сделать?

Ответы [ 2 ]

7 голосов
/ 23 февраля 2012

Следующее должно дать вам эффект, который вы ищете.

Мой тестовый код:

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 работает так, как я хочу, потому что текущий каталог - это мой каталог, а не системный каталог по умолчанию.

Надеюсь, это понятно.

1 голос
/ 23 февраля 2012

C: \ Мои документы, вероятно, каталог, в котором находится ваша таблица. Если вы добавите

ChDir "C:\TheFolderWhereYourBatchIs"

перед запуском команды Shell, и это должно сработать ...

Кроме того, вы можете изменить свой пакетный файл, чтобы использовать абсолютный каталог вместо относительного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...