У меня есть книга, в которой используется макрос для запуска пакетного файла (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.