kevin091
Goto Top

Excel Makro über Batch Datei ausführen

Guten Abend,

ich wollte mal fragen, ob es möglich ist ein Excel Makro über eine Batch Datei auszuführen.

Ich habe in einem Order fünf Excel Tabellen ( Name: T1-T5) die über ein .bat Datei (die sich im selben Ordner befindet) der Reihe nach mit Hilfe von for %%i in (*.csv) do start "" "%%~i" geöffnet werden.

Da die Tabellen Regelmäßig neu erstellt werden habe ich ein Makro geschrieben, welches mir aus allen fünf geöffneten Tabellen die ausgefüllten Werte aus Reihe F kopiert, in der Tabelle fünf eine neues Blatt erstellt und alle Werte Transponiert einfügt. Dieses Makro kann man auch mit einer Tastenkombination ausführen, in meinem Fall STRGm.

Dadurch dass die Tabellen immer neu erstellt werden habe ich dieses Makro unter Personal.XLSB (Sub MSA_V2) abgespeichert, dass ich es immer anwenden kann.

Jetzt wäre meine frage, ob es möglich ist dass man in die .bat Datei einen befehl einfügt, der automatisch nach öffnen von Tabelle fünf (T5) dieses Makro ausführt so dass man die Tastenkombination nicht händisch betätigen muss.


Vielen lieben Dank im Voraus.

Content-ID: 555490

Url: https://administrator.de/contentid/555490

Ausgedruckt am: 23.11.2024 um 22:11 Uhr

beidermachtvongreyscull
beidermachtvongreyscull 06.03.2020 um 21:28:14 Uhr
Goto Top
Kevin091
Kevin091 06.03.2020 um 21:46:17 Uhr
Goto Top
Hallo,

vielen Dank für die Antwort.

Das Problem ist, dass ich das Makro unter "Alle offenen Arbeitsmappen" abgespeichert habe da es sich bei den Tabellen um .csv handelt und ich es somit in jeder Excel Tabelle habe.

Deswegen war meine Idee, nach dem ausführen des Befehls "for %%i in (*.csv) do start "" "%%~i"" eine kurze pause einbaue z.B. timeout /t 3
und danach der befehl kommt das Makro in Tabelle 5 auszuführen, evtl. mit Hilfe eines SendKeys Befehls.

In etwa so:

for %%i in (*.csv) do start "" "%%~i"
timeout /t 3
SendKeys"^(m)"

Allerdings funktioniert das so nicht. Ich denke es liegt daran, dass nicht die zuletzt geöffnete CSV selektiert ist und ich weis leider nicht wie das geht. face-smile
beidermachtvongreyscull
beidermachtvongreyscull 06.03.2020 um 22:04:55 Uhr
Goto Top
Entschuldigung,

ich habe diese Info überlesen.
TK1987
TK1987 11.03.2020 aktualisiert um 12:14:33 Uhr
Goto Top
Moin,

mit Powershell wäre sowas möglich.

Etwa so:
# Excel öffnen
  $Excel=New-Object -ComObject Excel.Application
  $Excel.Visible=$True

# Benutzerabfragen abschalten
  $Excel.DisplayAlerts=$False

# Persönliche Makromappe öffnen
  $Makromappe=$Excel.Workbooks.open("$ENV:APPDATA\Microsoft\Excel\XLSTART\PERSONAL.xlsb")  

# Mappe öffnen
  $Mappe1=$Excel.Workbooks.open("C:\PFAD\ZUR\EXCEL\MAPPE.xlsx")  

# Makro ausführen
  $Excel.run("MAKRONAME")  

# Mappe speichern und schließen
  $Mappe1.save()
  $Mappe1.close()

# Excel schließen
  $Excel.Quit()

Gruß Thomas