Как открыть excel файл через bat

Обновлено: 05.07.2024

У меня есть макрос Excel VBA, который мне нужно запустить при доступе к файлу из пакетного файла, но не каждый раз, когда я его открываю (следовательно, не используя событие open file). Есть ли способ запустить макрос из командной строки или пакетного файла? Я не знаком с такой командой.

предположим, что среда Windows NT.

вы можете запустить Excel, открыть книгу и запустить макрос из файла VBScript.

скопируйте приведенный ниже код в блокнот.

обновление 'MyWorkbook.в XLS' и 'MyMacro'.

сохраните его с расширением vbs и запустите его.

ключевая строка, которая запускает макрос:

xlApp.Запустить "MyMacro"

самый простой способ сделать это:

1) запустить Excel из пакетного файла, чтобы открыть книгу, содержащую макрос:

2) вызовите свой макрос из Workbook_Open событие, например:

Теперь это вернет элемент управления в ваш пакетный файл для выполнения другой обработки.

вы можете написать vbscript для создания экземпляра excel с помощью метода createobject (), затем откройте книгу и запустите макрос. Вы можете либо вызвать vbscript напрямую, либо вызвать vbscript из пакетного файла.

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

ставим этот код в пакетный файл (используйте свои пути к EXCEL.EXE и в Книгу):

поместите этот код в объект Excel VBA ThisWorkBook:

и поместите свой код в модуль Excel VBA, например:

запустите пакетный файл и получите результат:

macro

для случая, когда вы не собираетесь запускать какой-либо макрос, просто поместите пустое значение Set MacroName= в пакет.

Если вам удобнее работать внутри Excel / VBA, используйте событие open и протестируйте среду: либо есть файл сигнала, запись реестра или переменная среды, которая управляет тем, что делает событие open.

вы можете создать файл / настройку снаружи и протестировать внутри (используйте GetEnviromentVariable для env-vars) и легко протестировать. Я написал VBScript, но сходство с VBA вызывает у меня больше страха, чем легкости..

как я понимаю проблема, вы хотите использовать электронную таблицу обычно большую часть / часть времени, но она запускается в пакетном режиме и делает что-то дополнительное/другое. Вы можете открыть лист из excel.exe командной строки, но вы не можете контролировать, что он делает, если он не знает, где он находится. Использование переменной среды относительно просто и упрощает тестирование электронной таблицы.

чтобы уточнить, используйте функцию ниже для изучения окружающей среды. В модуле объявите:

в событии открытия книги (как другие):

добавить в активный код, если это применимо. В пакетном файле используйте

вместо прямого сравнения строк (VB не найдет их равными, так как GetEnvironmentVariable возвращает строку длиной 255) напишите следующее:

Я всегда проверял количество открытых книг в Workbook_Open (). Если это 1, то книга была открыта командной строкой (или пользователь закрыл все книги, а затем открыл эту).

@ Robert: я попытался адаптировать ваш код с относительным путем и создал пакетный файл для запуска VBS.

VBS запускается и закрывается, но не запускает макрос. Есть идеи, где может быть проблема?

Я удалил " приложение.Бросить", потому что мой макрос вызывает пользовательскую форму, заботиться о нем.

редактировать

Я действительно разработал его, на всякий случай, если кто-то хочет запустить userform "alike" автономное приложение:

проблемы, с которыми я столкнулся:

1 - я не хотел использовать событие Workbook_Open, поскольку excel заблокирован только для чтения. 2-команда batch ограничена тем фактом, что (насколько мне известно) она не может вызвать макрос.

Я сначала написал макрос для запуска моей пользовательской формы, скрывая приложение:

затем я создал vbs для запуска этого макроса (делая это с относительным путем tricky):

и я, наконец, сделал пакетный файл для выполнения VBS.

обратите внимание, что я также включил "Set back to visible" в мой Userform_QueryClose :

в любом случае, спасибо за вашу помощь, и я надеюсь, что это поможет, если кому-то он нужен

Запуск файлов Excel через "Назначенные задания" Windows.

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Довольно часто это использую в работе,
но кое-что до сих пор в этой системе осталось загадкой.

1. При установке режима выполнения задания "При загрузке компьютера"
файл XLS не открывается, на некоторых станциях откроется один Excel и все.
Планировщик упорно пишет в столбце состояния "Выполняется. "

2. Если задание выполняю по времени, файл нормально открывается, но виде окна,
почему-то не на весь экран, как мне хотелось бы.
Что делаю - расширяю окно приблизительно на весь экран, либо пишу при старте.

А если открывать не XLS файл, а именно Excel и передавать файл в командной строке?

Что касается окна, то попробуйте еще дополнительно использовать команду START.

START /MIN EXCEL - запускает excel в свернутом состоянии
START /MAX EXCEL - в развернутом
START EXCEL - по умолчанию (определяется самим приложением)

Naeel Maqsudov, спасибо,
В общем попробовал кое-что, получились следующее.

1. Для запуска файла .xls при старте системы,

можно воспользоваться Автозагрузкой (о чем доходчиво написано в справке "Использование ключей автозагрузки при запуске Excel"
Создаем в папке Автозагрузка ярлык с указанием объекта -
"C:\Program Files\Microsoft Office\Office\EXCEL.EXE" C:\temp1\Книга123.xls,
там же можно поставить опцию Окно - "Развернутое на весь экран"

2. Для запуска файла .xls по времени

можно воспользоваться "Назначенными заданиями" Windows, при этом в качестве объекта запускать
- либо сам файл .xls, но без возможности управлять окном,
- либо bat-файл с ключами команды START, если bat-ник лежит в той же папке, где и файл .xls, проходит следующий вариант:
START /MAX Книга123.xls

Но если файл .xls все равно содержит макросы, то чтобы не создавать все эти ярлыки и bat-файлы, лучше макросом при старте выполнять:

как я могу решить это? Справка MS не помогает.

изменить:

реагирует Комментарии Дэйва, я пробовал:

и все работает нормально. Проблема начинается когда я пытаюсь включить /e переключатель для передачи аргументов в Excel. Именно. ..

они не производят никаких ошибок, проблема в том, что Excel не понимает, что последний файл является то, что я хотел бы передать файл xlsm, а не другой файл, который будет открыт в Excel. Сказать об этом Excel .dia должен быть параметром, обрабатываемым .xlsm, единственное, что я нашел, чтобы работать было удаление пробелов вокруг "/ e". Отсюда

работает по назначению, однако

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

Я просто создал следующую

Я подозреваю, что файл не ссылается правильно некоторые, как или что ваш может иметь некоторые настройки локали, которая путает его!

чтобы быть уверенным (просто чтобы исключить это), найдите MyFile.dia и переименовать его My File . dia в Проводнике. Затем, с помощью shift кнопка удерживается, щелкните правой кнопкой мыши файл (файл.dia) и выберите опцию Copy as path

затем вставьте его в качестве последнего параметра команды.

помните, если вы не создали эту строку самостоятельно и скопировали и вставили ее из другого источника, " метки могут не делать то, что вы думаете. Я предлагаю вам переписать всю строку, а затем проверить его. Или скопируйте мой строка выше и проверить, что, просто переименовать пути.

If D: не является локальным диском, тогда я предлагаю протестировать все на вашем рабочем столе (или, по крайней мере, локальное местоположение, где у вас не будет проблем с сетью или разрешениями).

Я даже пробовал его с подобной структурой каталогов, и он отлично работает.

enter image description here

Edit

Я также попытался бы каждый параметр по одному, чтобы обеспечить путь является правильным. Итак, в командной строке введите

"C:\Program файлы (x86)\Microsoft Office\Office14\EXCEL.EXE " и нажмите введите

"D:\Desktop\libs\xlam + приложения+diagramViewer\diagramViewer.файл xlsm" и нажмите введите

"D:\Desktop\MyFile.Диа" и нажмите клавишу введите

"Файл D:\Desktop\My . Диа" и нажмите введите

Edit 2

хорошо, теперь я могу лучше видеть / понимать неисправность, но предлагаю только 1 решение, которое является решением, которое вы не хотите - не допускайте пробелов.

enter image description here

Примечание, то проблема Excel, как представляется, замена пробелов с extension (поэтому смотрите пустое пространство, предполагает, что это конец имени файла и создает расширение).

Логотип Microsoft Excel

Вы можете открыть Microsoft Excel из командной строки, а также можете добавить в команду дополнительные параметры, чтобы выполнять такие действия, как открытие Excel с определенным шаблоном или запуск Excel в безопасном режиме для устранения неполадок.

Запустить Excel с помощью командной строки

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

Тип "cmd" на панели поиска Windows и щелкните Командная строка.

Откроется командная строка. Чтобы запустить Excel, введите эту команду и нажмите Enter:

Тип "начать отличаться" в командной строке.

Excel должен запуститься немедленно.

Чтобы найти файл excel.exe, вам необходимо находиться в каталоге Program Files в командной строке. Вы можете использовать команду cd, чтобы изменить каталог. Введите эту команду в командной строке и нажмите Enter:

Сменить на "Программные файлы" каталог в командной строке.

Теперь вы окажетесь в каталоге Program Files. Далее необходимо выяснить, в каком каталоге находится файл excel.exe. Для этого запустите эту команду:

каталог excel.exe / s

Будет возвращен каталог файла excel.exe.

Каталог Excel, возвращенный в командной строке.

Теперь, когда вы знаете каталог, в котором находится excel.exe, перейдите в этот каталог. Поскольку мы уже находимся в каталоге Program Files, мы можем пропустить это в следующей команде. В нашем примере мы запустим эту команду:

компакт-диск Microsoft Office root Office16

Перейдите в каталог, содержащий файл Excel.

Теперь, когда вы находитесь в правильном каталоге, все, что осталось сделать, это ввести excel в командной строке и нажать Enter.

Тип "преуспеть" в командной строке.

Откроется Excel. Однако основная цель запуска Excel из командной строки состоит в том, чтобы вы могли контролировать как он открывается, и вы делаете это, добавляя различные переключатели и параметры, доступные для команды.

Параметры и параметры командной строки Excel

Вот список командных переключателей, предоставляемых официальный сайт поддержки Microsoft Office. Добавьте их в конец команды start excel в командной строке.

Переключатель и описание параметра

путь к книге | имя файла

Никакого переключателя не требуется.

Открывает целевой файл.

запустите excel «c: Example Folder file_name1.xlsx»

путь к книге | имя файла

Открывает целевую книгу только для чтения.

start excel / r «c: Example Folder file_name1.xlsx»

/ t путь к книге | имя файла

Вы также можете использовать / n вместо / t для достижения того же результата.

Открывает целевой файл как шаблон.

start excel / t «c: Example Folder file_name1.xlsx»

/ e или / embed Предотвращает появление стартового экрана Excel и открытие новой пустой книги. / s или / safemode Запускает Excel в безопасном режиме. Это запускает Excel без каких-либо дополнительных надстроек, шаблонов или других настроек. Это полезно при устранении неполадок в Excel. / m Создает новую книгу, содержащую один лист макросов XLM. / a progID Загружает надстройку автоматизации, заданную идентификатором progID надстройки.

запустить excel / MyProgId.MyProgID2.1

/ x Запускает отдельный процесс Excel.

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

Читайте также: