Управляющий файл для макроса Excel
У меня есть макрос Excel, который я также использую для запуска командной строки. В этом макросе я установил некоторые параметры для разных путей к файлам, имена файлов и т. Д., Которые я теперь хочу добавить (возможно) пакетный файл Windows, чтобы мне (или пользователям) не нужно было касаться макроса, но можно внести изменения в пути к файлу в этом управляющем файле .bat и получить макрос для изменения его значений соответственно.
Как я мог достичь такой задачи? Может быть, есть примеры, на которые вы можете указать мне.
Спасибо.
- Ошибка Visual Basic FileCopy75 после обновлений Microsoft Office 2010
- Как программно установить имя пользователя Excel для имени хоста
- выполнение командного файла в vba с использованием оболочки commend не работает
- Установите фокус на приложение с пакетом
- Выполнять .vbs из партии для конкретной книги
- Выполнить .bat-файл из Excel VBA Macro
- Пакетный / Макро код для получения последнего файла с FTP-сайта
- записывать данные в excel с использованием командного файла
- Удаление специальных символов из нескольких файлов csv с использованием командного файла
- загружать обновленные данные в excel в базу данных mysql
- Пакетный файл для копирования / вставки файла excel с динамическим именем
- Преобразование рабочего листа Excel в CSV и сохранение имени файла в TXT. Пропустить имя файла для будущего выполнения скрипта
- Как запустить ftp.bat, нажав кнопку vba в excell?
Excel не предоставляет стандартного документированного способа передачи параметров в рабочую книгу из командной строки.
Однако есть недокументированный, сложный и несколько ограниченный способ сделать это. Нарушение параметра Excel /e
.
в вашем файле BAT вы вызываете excel таким образом
start excel "workbook.xls" /e/oneparm/anotherparm/yetanotherparm
а затем в файле workbook.xls вы получаете доступ к командной строке с помощью функции
Declare Function GetCommandLineA Lib "Kernel32" () As String
а затем просто разобрать его …
Private Sub Workbook_Open() ... commandline = GetCommandLineA ... epos = Search("/e", commandline, 1) + 1 p1pos = Search("/", commandline, epos) + 1 onearg = Mid(commandline, epos, p1pos-epos) p2pos = Search("/", commandline, p1pos) anotherarg = Mid(commandline, p1pos, p2pos-p1pos) ...
Предостережение, этот метод очень ограничен, он не работает, если в параметрах есть пробелы или косые черты или амперсанды или каретки или другие зарезервированные символы. Чтобы преодолеть это ограничение, вам необходимо реализовать некоторый метод кодирования в параметрах; для таких случаев я обычно использую urlencoding, но любой другой трюк (заменяя пробелы с символами подчеркивания или с плюсом signs.decision зависит от вас.
Самый простой способ из командного файла – просто установить некоторые переменные среды; они будут унаследованы excel, когда его процесс будет создан;
Летучая мышь
set FILE_1=c:\bleep\bloop\some.file set HELLO=Hello bob set TAX=17.5 start excel "c:\null\book1.xlsm"
превосходить
Sub Workbook_Open() msgbox environ$("FILE_1") msgbox environ$("HELLO") msgbox environ$("TAX")