Ошибка Excel при использовании имени пути в качестве параметра из командной строки
Я пытаюсь запустить конкретный документ Excel из командной строки и передать переменную в виде пути к файлу. При запуске листа Excel выполняется макрос. Этот путь к файлу может содержать пробелы, однако, когда Excel интерпретирует это, я считаю, что он пытается открыть каждый раздел после пробела в качестве новой книги. Это приводит к ряду предупреждений об ошибках после запуска программы, поскольку, очевидно, файл не может быть создан из подстроки.
Пакетный файл выглядит так:
echo %~1 start excel.exe %USERPROFILE%\Desktop\Compare.xlsm /e/%1% pause
EDIT: для уточнения. Пакетный файл активируется, когда файл перетаскивается и падает на него. Затем путь к файлу будет сохранен в переменной% 1. Если этот путь к файлу имеет пробелы, то после каждого пробела Excel предполагает, что это новый рабочий лист и пытается его открыть. Вызов Compare.xlsm, который содержит макрос, который будет использовать путь к перетаскиваемому файлу, работает правильно, так как он всегда будет на рабочем столе. Поэтому моя проблема заключается в том, как заставить Excel взять все имя пути, хранящееся в% 1, и использовать его как один параметр командной строки, а не несколько вызовов для открытия новых книг.
- Экспорт данных из Oracle в CSV / Excel с использованием командного и SQL-скриптов
- Создание имен файлов подходящего случая
- Запуск макросов Excel от Jenkins
- Почему команда Быстрое переключение между двумя местоположениями?
- Пакетный / Макро код для получения последнего файла с FTP-сайта
Если файл, который используется в пакетном файле, не содержит пробелов, ошибки не возникают. Есть ли способ избавиться от ошибок при использовании пути к файлу, который может иметь пробелы, например C: \ Users \ My Documents \ foobar.txt
- Как запустить файлы Excel в определенном порядке через cmd?
- Ошибка изменения кода VBA
- Как автоматизировать ежедневную программу SAS EG 4.1 и поместить вывод в Excel и запустить VBA и распечатать PDF?
- Закрытие EXCEL с использованием пакетной работы
- windows schtasks open excel, если не открыть, затем открыть рабочий лист, если не открыть
- Преобразование нескольких CSV в xls или xlsx и применение к ним формата
- Удалить строку заголовка из CSV
- Пакетный файл для копирования нового файла excel в новую папку
Попробуйте это ( ТРИ И ИСПЫТАТЬ )
echo %~1 start "excel.exe" "%USERPROFILE%\Desktop\Compare.xlsm" /e/%1% pause
Обратите внимание на цитаты вокруг «Excel.Exe» и путь к файлу?
Другой пример
echo %~1 start "excel.exe" "%USERPROFILE%\Desktop\Blah Blah.xlsm" /e/%1% pause
Я предполагаю, что вы используете код из файла .Bat
как говорит Сид, следует указывать любые пути, содержащие пробелы.
поэтому для использования pth, такого как C: \ My Documents \ fubar.txt, у вас будет следующее:
"C:\My Documents\fubar.txt"
и в вашем примере:
эхо
%~1 start excel.exe "%USERPROFILE%\Desktop\Compare.xlsm" /e/%1% pause
EDIT: при использовании переменной в качестве пути вам нужно включить кавычки в переменную!