Bat-Datei zum Öffnen von Excel mit Parametern - Leerzeichen

2

Ich möchte Excel ausführen, eine bestimmte Datei darin öffnen und Argumente an diese Datei übergeben. Mein Anruf ist

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

und das läuft so wie ich es will.

Wenn der Excel-Dateiparameter (MyFile.dia) jedoch ein Leerzeichen enthält, ist alles ruiniert, unabhängig von den Anführungszeichen. Die Fehlermeldung lautet, dass "File.dia" nicht gefunden werden kann.

Wie kann ich das lösen? Die MS-Hilfe hilft nicht.

BEARBEITEN:

Als Reaktion auf Daves Kommentare versuchte ich:

"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"

und alle arbeiten in Ordnung. Das Problem beginnt, wenn ich versuche, das einzuschließen /e Wechseln Sie, um Argumente an Excel zu übergeben. Nämlich ...

 "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"

Diese erzeugen keinen Fehler, das Problem ist, dass Excel nicht versteht, dass die letzte Datei etwas ist, das ich an die xlsm-Datei übergeben möchte und nicht an eine andere Datei, die in Excel geöffnet werden soll. Um Excel mitzuteilen, dass .dia ein von .xlsm verarbeiteter Parameter sein soll, habe ich nur die Leerzeichen um "/ e" gelöscht. Daher

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

funktioniert jedoch wie vorgesehen

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

führt dazu, dass Excel versucht, die ".dia" -Datei zu öffnen, was zu einer Fehlermeldung "Die .dia-Datei existiert nicht ..." führt.

Daniel Bencik
quelle
Ich versuche nicht, schwierig zu sein, aber benenne die Datei um, damit sie keinen Leerraum enthält, keine Option?
Dave
Dave, nicht wirklich. Dies wird häufig für Dateien verwendet, die von den anderen Mitarbeitern des Unternehmens erstellt wurden, in dem ich arbeite, und ich kann davon ausgehen, dass sie nur faul sind ...
Daniel Bencik
Ich kann Ihren Code fehlerfrei ausführen. Auch wenn ich den Code von "MyFile.dia" in "My File here.dia" ändere, wird die von Ihnen erwähnte Fehlermeldung nicht angezeigt.
Dave
Aus der cmd-Zeile? Können Sie bitte den genauen Befehl posten, den Sie verwenden?
Daniel Bencik
Ich habe es von einer .bat-Datei ausgeführt, wie in Ihrem Betreff angegeben? Ihr Titel lautet "Bat-Datei zum Öffnen von Excel" ... nun, als .bat-Datei funktioniert es so, wie es ist
Dave

Antworten:

1

Der Fehler muss sein, dass Ihr Pfad nicht auf das verweist, was Sie denken, oder ein Problem mit dem Gebietsschema ist, oder wie es Zeichen erkennt ...

Ich habe gerade Folgendes erstellt

"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"

Es funktioniert erwartungsgemäß (dh ohne Fehlermeldung) an der Eingabeaufforderung und in einer BAT-Datei.

Ich vermute, dass die Datei nicht richtig referenziert ist oder dass Ihre Ländereinstellung verwirrend ist!

Um sicher zu sein (nur um es auszuschließen), finden Sie die MyFile.dia und benenne es um My File . dia im Explorer. Dann mit dem Verschiebung Halten Sie die Taste gedrückt, klicken Sie mit der rechten Maustaste auf Ihre Datei (file.dia) und wählen Sie die Option aus Copy as path

Fügen Sie dies dann als letzten Parameter in Ihren Befehl ein.

Denken Sie daran, wenn Sie diese Zeichenfolge nicht selbst erstellt und aus einer anderen Quelle kopiert und eingefügt haben, entspricht die Markierung möglicherweise nicht Ihren Vorstellungen. Es wird empfohlen, die gesamte Zeichenfolge neu zu schreiben und anschließend zu testen. Oder kopieren Sie die Zeichenfolge oben und testen Sie das, benennen Sie einfach die Pfade.

Ob D: Wenn es sich nicht um ein lokales Laufwerk handelt, empfehle ich das Testen mit allen Elementen auf Ihrem Desktop (oder zumindest einem lokalen Speicherort, an dem Sie keine Probleme mit dem Netzwerk oder den Berechtigungen haben).

Ich habe es sogar mit ähnlicher Verzeichnisstruktur versucht und es funktioniert gut.

enter image description here

Bearbeiten

Ich würde auch jeden Parameter einzeln versuchen, um sicherzustellen, dass der Pfad korrekt ist. Geben Sie also in der Eingabeaufforderung Folgendes ein

"C: \ Programme (x86) \ Microsoft Office \ Office14 \ EXCEL.EXE" und drücken Sie eingeben

Dann

"D: \ Desktop \ libs \ xlam + apps + diagramViewer \ diagramViewer.xlsm" und drücken Sie eingeben

Dann

"D: \ Desktop \ MyFile.dia" und drücken Sie eingeben

Dann

"D: \ Desktop \ My File. Dia" und drücken Sie eingeben

Bearbeiten 2

Richtig, ich kann den Fehler jetzt besser sehen / verstehen, biete aber nur eine Lösung an, die Sie nicht wollen - lassen Sie keinen Leerraum zu.

Wenn ich Leerzeichen im Parameter sende, wird von Excel die folgende Meldung angezeigt (mein Parameter lautet: e/"C:\Users\DRook\Desktop\My File . dia" )

enter image description here

Hinweis: Das Problem ist, dass Excel anscheinend Leerzeichen mit der Erweiterung austauscht. Daher wird unter Leerzeichen davon ausgegangen, dass dies das Ende eines Dateinamens ist und die Erweiterung erstellt.

Dave
quelle
Dave, vielen Dank. Ich habe mir den Inhalt der Fledermausdatei mit "Show All Characters" in Notepad ++ angesehen - da war nichts faul. Mir ist jedoch aufgefallen, dass in Ihrem Beispiel kein Leerzeichen zwischen "... a d c.xlsx" und / e steht. Ich habe es versucht, aber es hat nicht funktioniert. Wenn ich jedoch "..diagramViewer.xlsm" / e "myFile.xls" (d. H. Keine Leerzeichen) ausgeführt habe, funktioniert alles wie ich wollte. Ich verstehe es überhaupt nicht, aber ich bin froh, dass es funktioniert.
Daniel Bencik
OK, aufgehört zu arbeiten ...
Daniel Bencik
Was meinst du damit, aufgehört zu arbeiten?
Dave
Gibt den gleichen Fehler wie immer ... Ich kann nicht herausfinden, worin sich unsere Maschinen unterscheiden. Ich glaube nicht, dass unterschiedliche Betriebssysteme dies beeinflussen könnten ...
Daniel Bencik
Ich habe ein Update gemacht. Ich bin auf W7
Dave
1

Ich habe mir etwas ähnliches angeschaut, wollte aber ein Makro in der geöffneten XLSM-Datei verwenden, um eine automatische Ausführung durchzuführen, wenn ein Parameter übergeben wurde.

Es gibt eine lange Diskussion bei http://www.vbforums.com/showthread.php?366559-Excel-How-to-Pass-Command-Line-Parameter-DKenny-is-KING

zu diesem Thema.

Was ich getan habe, ist der Vorschlag in Beitrag # 19 (interessant, dass der VB (6) "Befehl" in Office-Anwendungen, die ich überprüft habe, nicht funktioniert). Ich verwende eine Batch-Datei, um Excel zu starten:

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

Dann habe ich in der Makro-Arbeitsmappe Folgendes (klicken Sie im Projekt auf die Registerkarte "Arbeitsmappe"

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

Das StartMyMacro ist das, was Sie automatisch erreichen möchten.

Außerdem ist Mein StartMyMacro wie folgt definiert

Public Sub StartMyMacro(Optional Auto As Boolean = False)

Wobei bei manuellem Aufruf Auto auf False gesetzt wird und bei Aufruf über das automatische Öffnen die Variable auf True gesetzt wird. Am Ende speichere ich mit Auto = True die Arbeitsmappe (tatsächlich eine neue, die während des Makros erstellt wurde) und beende dann Excel. Dadurch wird das CMD-Fenster geschlossen und die Umgebungsvariable gelöscht.

RadioPlanner2013
quelle
0

Wir sind mit ähnlichen Problemen konfrontiert. Am Ende benennen wir die xlsm-Datei um. Es gab ein Problem mit der Codierung im Dateinamen.

Simple guy
quelle