Paramter übergeben, Code funktioniert nicht unter Windows 10
Guten Tag,
es geht darum, einen Paramter, der aus einem Programm an die Kommandozeile übergeben wird, an Excel weterzugeben, so dass der Wert dort automatisch weiterverarbeitet wird.
Aus dem Programm heraus wird silent.vbs gestartet, welches w4atoexcel.cmd, daraufhin öffnet sich Excel und zeigt den Paramter an, der im Programm gewählt wurde.
Untenstehender Code funktioniert auf Windows7 wunderbar, doch seit Windows10 installiert wurde, klappt es nicht mehr.
Wisst ihr, an welcher Stelle der Code angepasst werden muss, damit es auch auf Windows10 funktioniert? Vielen Dank.
silent.vbs (VBScriptdatei):
w4atoexcel.cmd (Windows-Befehlsskript):
es geht darum, einen Paramter, der aus einem Programm an die Kommandozeile übergeben wird, an Excel weterzugeben, so dass der Wert dort automatisch weiterverarbeitet wird.
Aus dem Programm heraus wird silent.vbs gestartet, welches w4atoexcel.cmd, daraufhin öffnet sich Excel und zeigt den Paramter an, der im Programm gewählt wurde.
Untenstehender Code funktioniert auf Windows7 wunderbar, doch seit Windows10 installiert wurde, klappt es nicht mehr.
Wisst ihr, an welcher Stelle der Code angepasst werden muss, damit es auch auf Windows10 funktioniert? Vielen Dank.
silent.vbs (VBScriptdatei):
Set WshShell = CreateObject("WScript.Shell")
Redim args(WScript.Arguments.Count-1)
args(0) = WScript.Arguments(0)
WshShell.Run chr(34) & "\\Excel\w4atoexcel.cmd" & Chr(34) & Join(args) , 0
Set WshShell = Nothing
w4atoexcel.cmd (Windows-Befehlsskript):
@echo off
START excel "\\Excel\Einzelansicht.xlsm" /e/%1
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 301951
Url: https://administrator.de/forum/paramter-uebergeben-code-funktioniert-nicht-unter-windows-10-301951.html
Ausgedruckt am: 01.05.2025 um 15:05 Uhr
12 Kommentare
Neuester Kommentar
Hi,
E.
- da fehlt ein Leerzeichen. s.u. Code
- Und Chr(34) kannst Du einfacher haben: Ein " innerhalb eines Strings muss man doppelt setzen. Bsp: "Blablabla ""xyz"" blablavbla"
- Was soll "\\Excel\w4atoexcel.cmd" sein? Wenn das ein UNC sein soll, Servername wäre dann "EXCEL", dann fehlt noch die Freigabe --> \\Excel\Freigabe\w4atoexcel.cmd"
WshShell.Run """\\Excel\w4atoexcel.cmd"" " & Join(args) , 0
E.

Moin,
oh man wer hat diesen Murks denn konstruiert?? Das ist ja vollkommen umständlich um 10 Ecken gedacht, da reicht doch das folgende VBS als einziges Skript vollkommen aus. Die Sub in dem Excelfile kannst du dann ebenfalls komplett rauslöschen, das macht in diesem Fall ebenfalls die VBS ...
Du brauchst also nur noch dieses VBS und das reine Excelfile ohne den Makro-Code im Sheet.
Gruß jodel32
oh man wer hat diesen Murks denn konstruiert?? Das ist ja vollkommen umständlich um 10 Ecken gedacht, da reicht doch das folgende VBS als einziges Skript vollkommen aus. Die Sub in dem Excelfile kannst du dann ebenfalls komplett rauslöschen, das macht in diesem Fall ebenfalls die VBS ...
Du brauchst also nur noch dieses VBS und das reine Excelfile ohne den Makro-Code im Sheet.
set objExcel = CreateObject("Excel.Application")
objExcel.DisplayAlerts = False
set wb = objExcel.Workbooks.Open("\\Excel\Einzelansicht.xlsm")
wb.Sheets("Projekt-Status").Range("D4").Value = WScript.Arguments(0)
wb.Save
objExcel.DisplayAlerts = True
objExcel.Quit

Hallo Jodel!
Dein Code entpricht auch meiner Vorstellung von silent
Allerdings ist der Paramter /e/ hier völlig überflüssig. Der wird ja erst im Cmd-Script generiert und sollte ja nur dazu dienen, im VBA-Code den an das VB-Script übergebene Argument aus der Command-Line zu extrahieren...
Gruß Dieter
Dein Code entpricht auch meiner Vorstellung von silent
Gruß Dieter

Seh ich gerade auch, Danke Dieter 
jodel
jodel

Zitat von @DerHulk:
Vielen Dank für die Hilfe, der Paramter wird korrekt übergeben. Nun möchte ich nur noch erreichen, dass das Workbook nicht gespeichert wird, sondern stattdessen direkt geöffnet wird.
Quasi eine VB Variante von START excel "\\gs05\Work4All\Excel\Einzelansicht.xlsm"
Kein Problem:Vielen Dank für die Hilfe, der Paramter wird korrekt übergeben. Nun möchte ich nur noch erreichen, dass das Workbook nicht gespeichert wird, sondern stattdessen direkt geöffnet wird.
Quasi eine VB Variante von START excel "\\gs05\Work4All\Excel\Einzelansicht.xlsm"
set objExcel = CreateObject("Excel.Application")
set wb = objExcel.Workbooks.Open("\\gs05\Work4All\Excel\Einzelansicht.xlsm")
wb.Sheets("Projekt-Status").Range("D4").Value = WScript.Arguments(0)
objExcel.Visible = True

Nö, musst du nicht. Du hattest bestimmt noch irgendein anderes Excel-Object in der Prozessliste "hängen", das musst du erst abschiessen, das ist 100% deinen diversen Versuchen geschuldet, das ist normal wenn dann das dann Excel verrückt spielt.

AppActivate is your friend
https://msdn.microsoft.com/en-us/library/office/gg278643(v=office.15).as ...
https://msdn.microsoft.com/en-us/library/office/gg278643(v=office.15).as ...