Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Excel aus vbs aufrufen mit Übergabe Parameter

Excel aus vbs aufrufen mit Übergabe Parameter
08.10.2024 12:59:33
Heinz
Hallo Supporter,

Mit folgendem vbs Script kann ich problemlos Excedatei starten und ein bestimmtes Makro ausführen; fuktioniert auch über Task Scheduler.

VBS Script:
'Input Excel File's Full Path
ExcelFilePath = "c:\hs\test.xlsm"
'Input Module/Macro name within the Excel File
MacroPath = "Modul3.start"
'Create an instance of Excel
Set ExcelApp = CreateObject("Excel.Application")
'Do you want this Excel instance to be visible?
ExcelApp.Visible = True 'or "False"
'Prevent any App Launch Alerts (ie Update External Links)
ExcelApp.DisplayAlerts = False
'Open Excel File
Set wb = ExcelApp.Workbooks.Open(ExcelFilePath)
'Execute Macro Code
ExcelApp.Run MacroPath
'Save Excel File (if applicable)
wb.Save
'Reset Display Alerts Before Closing
ExcelApp.DisplayAlerts = True
'Close Excel File
wb.Close
'End instance of Excel
ExcelApp.Quit

VBA Code:
Private Declare PtrSafe Function w_commandline Lib "kernel32.dll" Alias "GetCommandLineW" () As LongPtr
Private Declare PtrSafe Function w_strlen Lib "kernel32.dll" Alias "lstrlenW" (ByVal lpString As LongPtr) As Long
Private Declare PtrSafe Sub w_memcpy Lib "kernel32.dll" Alias "RtlMoveMemory" (dst As Any, src As Any, ByVal size As LongPtr)
Public Function GetCommandLine() As String
GetCommandLine = String$(w_strlen(w_commandline()), 0)
w_memcpy ByVal StrPtr(GetCommandLine), ByVal w_commandline(), LenB(GetCommandLine)
End Function
Private Sub Workbook_Open()
gn_cmdline = GetCommandLine()


Ich möchte jedoch, daß kein bestimmtes Makro ausgeführt wird, sondern Workbook.open einen zu übergebenden Parameter auswerten (in gn_cmdline) kann, der im vbs beim Excelaufruf übergeben wird.

Irgendwie bekomme ich das aber nicht hin; hat jemand eine Idee?

Danke für Hilfe!

MfG

Heinz


Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel aus vbs aufrufen mit Übergabe Parameter
08.10.2024 15:28:53
Yal
Hallo Heinz,

der Begriff "commandline" bezieht sich auf was man in einer Console-Fenster direkt eingibt:
Excel.exe /x "c:\hs\test.xlsm"
nicht auf die Steuerung über ein instanziertes Objekt (CreateObjekt), weil es in dem Fall gar keine Commandline gibt.
Siehe https://support.microsoft.com/en-us/office/command-line-switches-for-microsoft-office-products-079164cd-4ef5-4178-b235-441737deb3a6#Category=Excel

In diesem Fall wäre einfacher, temporär eine Environement-Variable zu setzen und diese im Marko zu lesen.

VG
Yal
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige