Использование Shell для запуска командного файла после сохранения файлов на новом диске - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть книга, в которой используется макрос для запуска пакетного файла (CEA.bat) через функцию Shell. Я создал книгу на локальном диске D: (C: это основной раздел / раздел ОС), и он там работает.

Я хотел бы поделиться копиями рабочей книги с моими коллегами, но, похоже, функция оболочки работает только на том диске, на котором она была создана (D :). Если я создаю копию рабочей книги в другом каталоге на исходном диске (D :), это работает. Если я создаю копию на другом диске (например, C :) или на другом компьютере, функция Shell не запускает пакетный файл.

Пакетный файл и рабочая книга всегда сохраняются в одной папке. Пакетный файл работает, если я запускаю его напрямую, поэтому я не думаю, что есть проблема с ним. Кажется, проблема связана с функцией Shell. Соответствующие строки кода показаны ниже:

Dim CEArun As String

ChDrive ThisWorkbook.Path 
ChDir ThisWorkbook.Path

CEArun = Chr(34) & ThisWorkbook.Path & "\CEA.bat" & Chr(34)

Call Shell(CEArun, vbMinimizedNoFocus)

Я встречал способ запуска пакетных файлов в VBA с использованием объекта WshShell, но я еще не пробовал. Похоже, что это будет работать, только если активирована «Windows Script Host Object Model». Мои коллеги имеют даже меньше знаний о VBA, чем я, поэтому я бы предпочел дать им инструмент, который они могут использовать, без необходимости возиться с настройками VBA.

1 Ответ

0 голосов
/ 13 февраля 2020

Это сработало для меня,

Сохранил файл .txt с пингом на моем компьютере и запустил этот код в моей книге. Летучая мышь открылась и сделала пинг:

Option Explicit
Sub Test()

    Dim MyPath As String: MyPath = ThisWorkbook.Path & "\CEA.bat"
    Shell MyPath, vbMinimizedNoFocus

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