Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1868to1872
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

xlsm mit Kommandozeilenparameter starten

xlsm mit Kommandozeilenparameter starten
21.02.2022 15:47:32
Heinzs
Hallo Excelprofis,
mit einer bat Datei rufe ich eine Exceltabelle auf:
call "C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE" /e/autorun "c:\test\test.xlsm"
Anmerkung:
/Autorun muß ich als Parameter auslesen können; untre 32 bit geschah dieses wie folgt:
Private Declare PtrSafe Function GetCommandLine Lib "kernel32.dll" Alias "GetCommandLineA" () As Long
Private Declare PtrSafe Function lstrlen Lib "kernel32.dll" Alias "lstrlenA" ( _
ByVal lpString As Any) As Long
Private Declare PtrSafe Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" ( _
ByRef pDst As Any, _
ByRef pSrc As Any, _
ByVal ByteLen As Long)
Private Sub Workbook_Open()
Dim strCmdLine As String, strArguments() As String
Dim lngArgumentsCount As Long, lngIndex As Long
Dim lngReturn As Long, lngLength As Long
lngReturn = GetCommandLine
lngLength = lstrlen(lngReturn)
If CBool(lngLength) Then
strCmdLine = Space$(lngLength)
Call CopyMemory(ByVal strCmdLine, ByVal lngReturn, lngLength)
End If
gn_cmdline = Left$(strCmdLine, InStr(strCmdLine & vbNullChar, vbNullChar) - 1)
If InStr(gn_cmdline, "/autorun") > 0 Then
gn_cmdline = "autorun"
Call start
endif
Irgendwie wird gn_cmdline nicht mehr korrekt gefüllt (Zusammenhang mit 64 bit?). Variable ist als public definiert.
Frage: hat jemand eine Idee?
Danke für Hilfe!
MfG
Heinz

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: xlsm mit Kommandozeilenparameter starten
21.02.2022 16:17:51
Yal
Hallo Heinz,
Du könntest zuerst deine Zieldatei in einer Variable legen, und diese in Excel lesen
im bat:

set aktExcelDatei="c:\test\test.xlsm"
call "C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE" /e/autorun %aktExcelDatei%
in Excel:

Sub test()
Debug.Print Environ("aktExcelDatei")
End Sub
(ungetestet)
VG
Yal
AW: xlsm mit Kommandozeilenparameter starten
21.02.2022 16:37:32
Heinzs
Hallo Yal,
danke für Deine Message. Damit erhalte ich den Pad und den Dateinamen, also "c:\test\test.xlsm" ich benötige jedoch den davor stehenden Parameter: /autorun
Hast Du vielleicht noch eine Idee?
Danke für Hilfe!
MfG
Heinz
Anzeige
AW: xlsm mit Kommandozeilenparameter starten
21.02.2022 16:49:33
Anton
Hallo Heinz,
probier's hiermit:

Sub b()
Dim objWMIService As Object, objItem As Object, gn_cmdline As String
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
For Each objItem In objWMIService.ExecQuery("Select * from Win32_Process where name='excel.exe'")
If InStr(objItem.CommandLine, "/autorun") > 0 Then
Debug.Print objItem.CommandLine
gn_cmdline = "autorun"
'Call Start
End If
Next
End Sub
mfg Anton
AW: xlsm mit Kommandozeilenparameter starten
21.02.2022 17:52:01
Nepumuk
Hallo Heinz,
korrigiere die Funktionen so:

Private Declare PtrSafe Function GetCommandLineA Lib "kernel32.dll" () As LongLong
Private Declare PtrSafe Function lstrlenA Lib "kernel32.dll" ( _
ByVal lpString As LongLong) As Long
Private Declare PtrSafe Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" ( _
ByRef Destination As Any, _
ByRef Source As Any, _
ByVal Length As LongPtr)
Gruß
Nepumuk
Anzeige
AW: xlsm mit Kommandozeilenparameter starten
22.02.2022 12:06:43
Heinzs
Hallo,
vielen Dank für Eure Hilfe; ich habe die Lösung von Nepumuk umgesetzt; funktioniert super!
MfG
Heinz

24 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige