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

Forumthread: Batch-Datei per Makro starten

Batch-Datei per Makro starten
10.02.2009 22:51:00
Horst
Hallo zusammen!
Wie kann ich eine .bat-Datei (batch-Datei) über ein Excel Makro starten? Mit "Shell" funktionieren ja nur ausführbare Programme (.exe-Dateien)? Hat wer damit Erfahrung?
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Batch-Datei per Makro starten
10.02.2009 22:56:44
Nepumuk
Hallo Horst,

Mit "Shell" funktionieren ja nur ausführbare Programme (.exe-Dateien)?


wer behauptet das?

Public Sub test()
    Shell "D:\Eigene Dateien\BAT\tree.bat"
End Sub

Gruß
Nepumuk
Anzeige
Shell "C:\temp\Helloworld.bat", vbNormalFocus
10.02.2009 23:00:00
NoNet
Hallo Horst,
wer behauptet denn, dass man per SHELL() nur EXE-Dateien ausführen kann ?
Man kann sehr wohl BAT-Dateien ausführen :
Shell "C:\temp\Helloworld.bat", vbNormalFocus
Ausserdem könnte man über die CMD.EXE ebenfalls eine BAT ausführen :
Shell "cmd.exe /C C:\temp\Helloworld.bat", vbNormalFocus
Gruß, NoNet
Anzeige
AW: Shell "C:\temp\Helloworld.bat", vbNormalFocus
10.02.2009 23:15:06
Horst
Also bei mir funktioniert's nicht! Keine Ahnung, warum. Weder Variante 1 noch über die cmd.exe (obwohl ein ganz kurzes Öffnen der cmd sichtbar wird)
Inhalt der .bat-Datei:
copy _automat.dat automate.dat
Wenn ich die .bat-Datei direkt anklicke, bekomme ich eine Kopie der .dat-Datei. Über VBA tut sich nichts!
WARUM?
Was muss ich in VBA angeben, wenn ich eine Verknüpfung öffnen will? Das geht bei mir mit "Shell ..." auch nicht. Wofür steht nochmal vcNormalFocus?
Anzeige
Beinhaltet der Name der Batchdatei LEERZEICHEN ?
10.02.2009 23:38:00
NoNet
Hallo horst,
ich könnte mir vorstellen, dass der Name der Batchdatei Leerzeichen beinhaltet !?!?
Dann lautet die Version per CMD.EXE so :
Shell "cmd.exe /C " & """C:\temp\Hello World.bat""", vbNormalFocus
Falls das nicht klappt : Poste doch bitte mal Deinen SHELL-Aufruf !
Das Argument vbNormalFocus bewirkt lediglich, dass das BATCH-Fenster in den Vordergrund rückt und somit sichtbar wird (und nicht hinter dem Excel-Fenster "unsichtbar" bleibt).
Gruß, NoNet
Anzeige
AW: Shell "C:\temp\Helloworld.bat", vbNormalFocus
11.02.2009 08:55:00
bst
Morgen auch,
Du gehst von falschen Voraussetzungen aus.
Shell "e:\test\xyz.bat"
startet zwar die Batchdatei im Verzeichnis e:\test, wechselt aber keinesfalls dorthin.
Das Verzeichnis von dem heraus gestartet wird ist CurDir, d.h. Du brauchst entweder Pfadangaben bei deinen Dateinamen oder musst in der Batch Laufwerk und Pfad wechseln.
Starte mal so eine Batchdatei, dann siehst Du das:
cd
pause
cu, Bernd
Anzeige
AW: Shell "C:\temp\Helloworld.bat", vbNormalFocus
11.02.2009 10:11:00
Horst
Besten Dank Euch allen! Das war der entscheidende Tipp. Und wie starte ich dann eine Verknüpfung? Auch mit Shell und .lnk?
AW: Batch-Datei per Makro starten
10.02.2009 23:43:00
Tino
Hallo,
versuche es mal hiermit,
damit starte ich auch immer VBS Skripte, sollte mit Batch Dateien auch gehen.
Private Declare Function ShellExecute _
  Lib "shell32.dll" Alias "ShellExecuteA" ( _
  ByVal hWnd As Long, _
  ByVal Operation As String, _
  ByVal Filename As String, _
  Optional ByVal Parameters As String, _
  Optional ByVal Directory As String, _
  Optional ByVal WindowStyle As Long = vbMinimizedFocus _
  ) As Long

Sub Start()
 ShellExecute 0, "Open", "c:\test.bat", , , 1
End Sub


Gruß Tino

Anzeige
AW: Batch-Datei per Makro starten
11.02.2009 10:27:00
Horst
SUPER! Auf diese Weise lassen sich sogar Verknüpfungen starten. Allerbesten Dank!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Batch-Datei über Makro in Excel starten


Schritt-für-Schritt-Anleitung

Um eine Batch-Datei (.bat) über ein Excel-Makro auszuführen, kannst du die Shell-Funktion in VBA nutzen. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Erstelle ein neues Modul: Rechtsklick auf „VBAProject (DeinWorkbook)“ > Einfügen > Modul.

  3. Füge den folgenden Code ein, um die Batch-Datei auszuführen:

    Sub StartBatchDatei()
       Shell "C:\Pfad\zu\deiner\Batchdatei.bat", vbNormalFocus
    End Sub

    Ersetze C:\Pfad\zu\deiner\Batchdatei.bat durch den tatsächlichen Pfad deiner .bat-Datei.

  4. Schließe den VBA-Editor und führe das Makro aus, um die Batch-Datei zu starten.


Häufige Fehler und Lösungen

  1. Batch-Datei wird nicht gefunden: Überprüfe den Pfad zur Batch-Datei. Achte darauf, dass du den vollständigen Pfad angibst.

  2. Batch-Datei wird nicht ausgeführt: Wenn die Batch-Datei Leerzeichen im Namen hat, umschließe den Pfad mit Anführungszeichen:

    Shell "cmd.exe /C ""C:\Pfad\zu\deiner Batchdatei.bat""", vbNormalFocus
  3. Keine Rückmeldung vom Skript: Stelle sicher, dass der Inhalt der Batch-Datei korrekt ist. Teste sie, indem du sie direkt außerhalb von Excel ausführst.


Alternative Methoden

Eine weitere Möglichkeit, eine Batch-Datei auszuführen, besteht darin, die ShellExecute-Funktion zu verwenden. Dies kann hilfreich sein, um auch Verknüpfungen (.lnk) zu starten. Hier ein Beispiel:

Private Declare Function ShellExecute _
    Lib "shell32.dll" Alias "ShellExecuteA" ( _
    ByVal hWnd As Long, _
    ByVal Operation As String, _
    ByVal Filename As String, _
    Optional ByVal Parameters As String, _
    Optional ByVal Directory As String, _
    Optional ByVal WindowStyle As Long = vbMinimizedFocus) As Long

Sub StartMitShellExecute()
    ShellExecute 0, "Open", "C:\Pfad\zu\deiner\Batchdatei.bat", vbNullString, vbNullString, vbNormalFocus
End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du die Batch-Datei in verschiedenen Szenarien ausführen kannst:

  • Batch-Datei aus einem bestimmten Verzeichnis starten:

    ChDir "C:\Pfad\zu\deinem\Verzeichnis"
    Shell "deineBatchdatei.bat", vbNormalFocus
  • Batch-Datei mit CMD ausführen:

    Shell "cmd.exe /C C:\Pfad\zu\deinerBatchdatei.bat", vbNormalFocus
  • Batch-Datei mit Eingabeparametern:

    Shell "C:\Pfad\zu\deinerBatchdatei.bat param1 param2", vbNormalFocus

Tipps für Profis

  • Verwendung von CurDir: Du kannst das aktuelle Verzeichnis in VBA mit CurDir ändern, um sicherzustellen, dass die Batch-Datei im richtigen Kontext ausgeführt wird.

  • Debugging: Verwende Debug.Print in VBA, um den Pfad zur Batch-Datei zu überprüfen, bevor du das Shell-Kommando ausführst.

  • Sichtbarkeit des CMD-Fensters: Das Argument vbNormalFocus sorgt dafür, dass das Fenster in den Vordergrund kommt. Wenn du das Fenster minimiert halten möchtest, verwende vbMinimizedFocus.


FAQ: Häufige Fragen

1. Kann ich auch andere Arten von Dateien mit einem Makro ausführen?
Ja, du kannst auch andere ausführbare Dateien (.exe) oder Skripte (.vbs) in ähnlicher Weise ausführen.

2. Wie kann ich sicherstellen, dass die Batch-Datei im richtigen Verzeichnis ausgeführt wird?
Du kannst das aktuelle Verzeichnis mit ChDir ändern, bevor du das Shell-Kommando ausführst.

3. Was ist der Unterschied zwischen Shell und ShellExecute?
Shell startet eine Anwendung direkt, während ShellExecute eine Datei oder eine Verknüpfung öffnet, was mehr Flexibilität bietet, insbesondere für Dateien mit Leerzeichen im Namen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige