Ошибка Excel при использовании имени пути в качестве параметра из командной строки

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

Пакетный файл выглядит так:

echo %~1 start excel.exe %USERPROFILE%\Desktop\Compare.xlsm /e/%1% pause 

EDIT: для уточнения. Пакетный файл активируется, когда файл перетаскивается и падает на него. Затем путь к файлу будет сохранен в переменной% 1. Если этот путь к файлу имеет пробелы, то после каждого пробела Excel предполагает, что это новый рабочий лист и пытается его открыть. Вызов Compare.xlsm, который содержит макрос, который будет использовать путь к перетаскиваемому файлу, работает правильно, так как он всегда будет на рабочем столе. Поэтому моя проблема заключается в том, как заставить Excel взять все имя пути, хранящееся в% 1, и использовать его как один параметр командной строки, а не несколько вызовов для открытия новых книг.

Если файл, который используется в пакетном файле, не содержит пробелов, ошибки не возникают. Есть ли способ избавиться от ошибок при использовании пути к файлу, который может иметь пробелы, например C: \ Users \ My Documents \ foobar.txt

Попробуйте это ( ТРИ И ИСПЫТАТЬ )

 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: при использовании переменной в качестве пути вам нужно включить кавычки в переменную!

  • Запустите файл Excel из исполняемого файла Windows в safemode, используйте ассоциацию файлов по умолчанию
  • Скрипт для открытия определенного файла / листа Excel в зависимости от времени и даты
  • Удалить место из определенного столбца в каталоге
  • Пакетное переименование w / Powershell - нужно искать и сопоставлять file_id с заголовком в csv
  • Объединение двух файлов excel с использованием пакетного скрипта
  • Преобразование рабочего листа Excel в CSV и сохранение имени файла в TXT. Пропустить имя файла для будущего выполнения скрипта
  • Преобразовать пакетный файл .bat в макрос Excel?
  • Пакет для принудительного закрытия всех файлов excel
  • как автоматически удалять определенные строки в файле excel?
  • Необходимо автоматизировать скрипт для поиска и замены HEX на DEC в XML-файлах
  • Отправка файла Excel на принтер в пакетном задании
  • Давайте будем гением компьютера.