2

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

"C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" 
"D:\Desktop\libs\xlam\+apps\+diagramViewer\diagramViewer.xlsm"
/e"D:\Desktop\MyFile.dia"

и это работает так, как я хочу.

Однако когда параметр файла Excel (MyFile.dia) содержит пробел, все разрушается независимо от кавычек. Сообщение об ошибке заключается в том, что «File.dia» не может быть найден.

Как я могу решить это? Помощь MS не помогает.

РЕДАКТИРОВАТЬ:

Реагируя на комментарии Дейва, я попытался:

"C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE"
"C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" "D:\Desktop\libs\xlam\+apps\+diagramViewer\diagramViewer.xlsm"
"C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" "D:\Desktop\libs\xlam\+apps\+diagramViewer\diagramViewer.xlsm" "D:\Desktop\MyFile.dia"
"C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" "D:\Desktop\libs\xlam\+apps\+diagramViewer\diagramViewer.xlsm" "D:\Desktop\MyFile .dia"

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

 "C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" "D:\Desktop\libs\xlam\+apps\+diagramViewer\diagramViewer.xlsm" /e "D:\Desktop\MyFile.dia"
 "C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" "D:\Desktop\libs\xlam\+apps\+diagramViewer\diagramViewer.xlsm" /e "D:\Desktop\MyFile. dia"

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

 "C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" "D:\Desktop\libs\xlam\+apps\+diagramViewer\diagramViewer.xlsm"/e"D:\Desktop\MyFile.dia"

работает как задумано, однако

 "C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" "D:\Desktop\libs\xlam\+apps\+diagramViewer\diagramViewer.xlsm"/e"D:\Desktop\MyFile .dia"

в результате Excel пытается открыть файл .dia, что приводит к сообщению об ошибке «Файл .dia не существует ...».

3 ответа3

1

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

Я только что создал следующее

"C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" "C:\Users\DRook\Desktop\a d c.xlsx"/e "C:\Users\DRook\Desktop\My File . dia"

Он работает как ожидалось (имеется в виду, без сообщения об ошибке) из командной строки и файла .bat.

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

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

Затем вставьте это как последний параметр в вашей команде.

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

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

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

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

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

«C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE» и нажмите ввод

затем

«D:\Desktop\libs\xlam+apps+gramViewer \diagramViewer.xlsm» и нажмите ввод

затем

«D:\Desktop\MyFile.dia» и нажмите ввод

затем

«D:\Desktop\My File. Dia» и нажмите ввод

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

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

Когда я отправляю пробел в параметре, происходит следующее: я получаю следующее сообщение из Excel (обратите внимание, мой параметр - это e/"C:\Users\DRook\Desktop\My File . dia").

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

1

Я смотрел на что-то подобное, но хотел использовать макрос в открытом XLSM-файле для автозапуска, если передал параметр.

Существует долгое обсуждение на http://www.vbforums.com/showthread.php?366559-Excel-How-to-Pass-Command-Line-Parameter-DKenny-is-KING.

об этой теме.

Я использовал предложение из поста № 19 (интересно, что "команда" VB (6) не работает в приложениях Office, что я проверил). Что я делаю, это использую командный файл для запуска Excel:

Set ExcelArgs=AutorunMacros
"C:\Program Files (x86)\Microsoft Office\Office14\excel.exe" /e "C:\Path to\Excel File\Analyser Program.xlsm" 

Затем в рабочей книге Macro у меня есть следующее (нажмите на вкладку "Рабочая книга" в Project

Private Sub Workbook_Open()
Dim ExcelArgs As String
ExcelArgs = Environ("ExcelArgs")
If Lcase (ExcelArgs)= "autorunmacros" Then
    Call StartMyMacro(Auto:=True)
End If
End Sub

StartMyMacro - это то, чего вы хотите достичь автоматически.

Кроме того, My StartMyMacro определяется следующим образом

Public Sub StartMyMacro(Optional Auto As Boolean = False)

который при вызове вручную имеет Auto Set в False, а при вызове из автоматического открытия устанавливает значение переменной True. В конце, с Auto = True, я сохраняю книгу (фактически новую, созданную во время макроса), а затем завершаю работу в Excel. Это приводит к закрытию окна CMD и очистке переменной среды.

0

Мы столкнулись с подобной проблемой. В итоге мы переименовываем файл xlsm. Была проблема с кодировкой в имени файла.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .