Управляющий файл для макроса Excel

У меня есть макрос Excel, который я также использую для запуска командной строки. В этом макросе я установил некоторые параметры для разных путей к файлам, имена файлов и т. Д., Которые я теперь хочу добавить (возможно) пакетный файл Windows, чтобы мне (или пользователям) не нужно было касаться макроса, но можно внести изменения в пути к файлу в этом управляющем файле .bat и получить макрос для изменения его значений соответственно.

Как я мог достичь такой задачи? Может быть, есть примеры, на которые вы можете указать мне.

Спасибо.

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") 
  • Пакетный файл для копирования нового файла excel в новую папку
  • Нечетное поведение FTP при вызове командного файла из VBA на Windows Server 2012 R2
  • Переименование файлов путем проверки строк в имени файла, которое будет заменено соответствующей новой строкой
  • Пакетная вставка из Excel в SQL Server
  • Ошибка изменения кода VBA
  • Пропустить диалог, когда excel начинается с партии
  • Переименование и форматирование листа Excel с пакетным файлом
  • Преобразование нескольких CSV в xls или xlsx и применение к ним формата
  • с файлом bat: открыть excel в существующем (уже открытом) экземпляре excel
  • Как автоматизировать ежедневную программу SAS EG 4.1 и поместить вывод в Excel и запустить VBA и распечатать PDF?
  • Закрытие EXCEL с использованием пакетной работы
  • Interesting Posts

    Итеративный цикл UPDATE в SQL Server

    Как скопировать поле в сводной таблице

    Excel: изменение продолжительности (часы, минуты, секунды) до 6 минут

    Соответствие, разбиение, преобразование и суммирование строки в Excel / Numbers

    Экзамен VBA: (для Mac) Calling Application object заставляет другие рабочие книги сворачивать

    Зачеркнутый ряд

    Перемещение по столбцам для вставки формулы SUM

    Процедура обработчика событий для записи всех значений в выборке ячеек до и после их изменения

    Удалите соединение с электронной таблицей Excel автоматически

    Excel, если формула

    Копировать заполненные столбцы на пустые поля в другом столбце в той же строке

    ИЛИ в Excel Pivot

    Невозможно назначить формулу IF для ячейки

    Подсчитайте, сколько значений имеет дубликаты в столбце

    Excel: сопоставление столбца B с колонкой A и размещение идентификатора в соответствующем столбце C, D, E и т. Д.

    Давайте будем гением компьютера.