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

aufrufen Excel-Anwendung mit Übergabewert

Forumthread: aufrufen Excel-Anwendung mit Übergabewert

aufrufen Excel-Anwendung mit Übergabewert
18.09.2025 16:59:10
Steinhauser
Hallo liebe Excel-Gemeinde,
ich habe momentan ein Problem das für mich sehr groß ist, Euch aber wahrscheinlich nur ein Lächeln abringt.
Ich habe schon viel gelesen, etliches ausprobiert - bin aber immer wieder auf Fehler gelaufen oder es hat sich gar nichts getan.
Irgendwie stehe ich total auf dem Schlauch.
Hier die Beschreibung was ich eigentlich machen will :
Meine Excel-Anwendung "Sicherung.xlsm" führt 2 unterschiedliche Berechnungs-Blöcke im Unterprogramm
"Rechnen" aus. Gesteuert wird über ein Kennzeichen ("K" oder "T").
Ich möchte nun diese Excel-Anwendung aus einer Batch-Routine mit Call "Sicherung.xlsm" aufrufen und dabei
den Wert "K" oder "T" mitgeben (als Parameter oder als absoluten Wert).
Wie würde es in der .bat-File aussehen ? >>> Call sicherung.xlsm "K" oder
Call sicherung.xlsm K oder
Call sicherung.xlsm (K). oder
Call sicherung.xlsm ("K") .

Dieses Kennzeichen "K" oder "T" steuert dann die Berechnung im Unterprogramm "Rechnen" entsprechend.
Ist das ein Parameter der da übergeben wird bzw. in welchem Modul muss ich etwas dazu angeben?
Hört sich eigentlich einfach an aber ich komme nicht weiter.

Ich hoffe die Beschreibung ist aussagekräftig und genügt in dieser Form.
Ich würde mich sehr über Tipps, Lösungsansätze oder dergleichen freuen.

Schon mal danke im voraus, Servus
Günther

Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: aufrufen Excel-Anwendung mit Übergabewert
18.09.2025 17:38:32
Oppawinni
Hm.. die KI sagt, dass man das z.B. mit dem Aufruf
excel.exe /e C:\sicherung.xlsm /m "MeinMakroMitParameter(""K"")"
machen könnte, erfordert aber, dass in diesem Fall in der Datei sicherung.xlsm die entsprechende Sub existiert, z.B.:
Sub MeinMakroMitParameter(MeinParameter As String)

MsgBox "Der übergebene Parameter ist: " & MeinParameter
End Sub

Ich hab das aber nicht getestet.
Anzeige
AW: aufrufen Excel-Anwendung mit Übergabewert
18.09.2025 20:36:51
Steinhauser
Hallo,
erstmal danke für die Info - melde mich wieder wenn ich ich getestet habe.
Kann aber noch etwas dauern.
Servus Günther
AW: aufrufen Excel-Anwendung mit Übergabewert
18.09.2025 22:49:19
Oppawinni
Im Zweifelsfall könnte man in der .bat einfach vor dem Aufruf eine Umgebungsvariable setzten also...
set myparam1="L"
call sicherung.xlsm

und dann halt im Makro die Umgebungsvariable abfragen.
z.B.
Private Sub Workbook_Open()

Dim strEnv
strEnv = Environ$("myparam1")

Select Case UCase(Replace(strEnv, Chr(34), ""))

Case "L": MsgBox strEnv
' Aktion für Parameter L ausführen
Application.Quit

Case "K": MsgBox strEnv
' Aktion für Parameter K ausführen"
Application.Quit

Case Else: MsgBox "unkown Parameter"

End Select
End Sub


Wenn du das dann nicht über die Batch-Datei aufrufst ist die Umgebungsvariable nicht belegt und Excel bleibt offen..."unkown Parameter"
Es wär jedenfalls blöd, wenn in jedem Fall Excel automatisch wieder geschlossen würde.
Anzeige
AW: aufrufen Excel-Anwendung mit Übergabewert
21.09.2025 16:16:20
Steinhauser
Hallo,
erstmal vielen Dank für Deine rasche Hilfe - bin leider erst jetzt dazu gekommen es zu testen.

Also der zweite Ansatz hat mir sehr gut gefallen und ich habe ihn etwas abgewandelt umgesetzt - funktioniert so wie ich es brauche:
-----------------------------------
Private Sub Workbook_Open()
Dim strEnv
strEnv = Environ$("myparam1")
Select Case UCase(Replace(strEnv, Chr(34), ""))
Case "T": Call fuellen_t
Call sort_ab
Application.Quit
'
Case "K": MsgBox strEnv
' Aktion für Parameter K ausführen"
Call fuellen_k
Call sort_ab
Application.Quit
'
Case Else: MsgBox "unkown Parameter"
'
End Select
End Sub

-------------------------------------
Jetzt aber noch eine Frage - kann man mehrere Umgebungs-Parameter
beim Aufruf mitgeben (z.B. die Uhrzeit aus dem Batch-Programm?).
Diesen Wert möchte ich dann gerne in ein Datenfeld der Datei übertragen.
Das wäre dann das Tüpfelchen auf dem i.

Servus Günther
Anzeige
AW: aufrufen Excel-Anwendung mit Übergabewert
21.09.2025 18:41:11
Oppawinni
Also erstmal ... "unknown".. sollte das da heißen, war ein Fehler von mir.
Klar kann man auch noch ne Umgebungsvariable setzen. Das geht ganz analog.
Den Namen myparam1 hab ich mir einfach nur ausgedacht... du solltest halt jetzt nicht unbedingt bereits vorhandene Umgebungsvariablen überschreiben, das könnte nämlich ziemlich ungünstig sein.
Die Uhrzeit sollte man in der .bat mit %time% geliefert bekommen. Also dann etwa: myparam2=%time%
Man könnte natürlich auch mehrere Sachen in einen Parameter packen, müsste das dann im Macro halt wieder zerlegen.



Anzeige
AW: aufrufen Excel-Anwendung mit Übergabewert
21.09.2025 18:59:54
Steinhauser
Hallo,
danke für Deine zusätzlichen Ausführungen - hat mir auf alle Fälle weiter geholfen und mein Verständnis
für VBA etc. etwas erweitert (kann ja nie schaden).
Einen schönen Restsonntag noch, Servus
Günther
AW: aufrufen Excel-Anwendung mit Übergabewert
18.09.2025 19:55:37
volti
Hallo Günther,

hier noch eine Idee zum Thema...

In DieseArbeitsmappe
Option Explicit

Private Declare PtrSafe Function GetCommandLineW Lib "kernel32.dll" () As LongPtr
Private Declare PtrSafe Function lstrlenW Lib "kernel32.dll" (ByVal lpString As LongPtr) As Long
Private Declare PtrSafe Sub RtlMoveMemory Lib "kernel32.dll" (dst As Any, src As Any, ByVal size As LongPtr)

Private Function GetCommandLine() As String
' Ermittle den Commandlineparameter
GetCommandLine = String$(lstrlenW(GetCommandLineW()), 0)
RtlMoveMemory ByVal StrPtr(GetCommandLine), ByVal GetCommandLineW(), LenB(GetCommandLine)
End Function

Private Sub Workbook_Open()
Dim iPos As Long, sParam As String

sParam = GetCommandLine()
iPos = InStr(sParam, "/p ")
If iPos > 0 Then MsgBox Replace(Mid$(sParam, iPos + 3), Chr(34), "")
End Sub


Und der Batch-Aufruf dazu
Call "C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE" "C:\Users\volti\Desktop\Sicherung.xlsm" /p "K"
Gruß
Karl-Heinz
Anzeige
AW: aufrufen Excel-Anwendung mit Übergabewert
18.09.2025 20:39:20
Steinhauser
Hallo Karl-Heinz,
erstmal danke für die Info - melde mich wieder wenn ich ich getestet habe.
Kann aber noch etwas dauern.
Servus Günther
AW: aufrufen Excel-Anwendung mit Übergabewert
21.09.2025 19:04:48
Steinhauser
Hallo Karl-Heinz,
habe mich jetzt für die andere Lösung entschieden und komme perfekt damit klar.
Nochmals vielen Dank für Deine Hilfe.
Servus Günther
Anzeige
AW: aufrufen Excel-Anwendung mit Übergabewert
21.09.2025 19:10:37
volti
Freut mich, dass Du Dich hier auch zurück meldest Günther.
Vielen Dank.

Die Variante mit Umgebungsvariablen hatte ich auch im Hinterkopf. Es gibt halt meistens mehrere Wege zum Ziel.

Gruß
Karl-Heinz
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18