Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1624to1628
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

Batchdatei wird nicht durchlaufen. Sofort Ende

Batchdatei wird nicht durchlaufen. Sofort Ende
07.06.2018 12:04:28
Jens
Hallo,
ich führe in excel eine Batch datei aus über VBA.
Die Batchdatei wird zwar geöffnet, aber die Prozedur läuft nicht durch.
Sprich die Batch Datei wird sehr schnell wieder geschlossen.
Vielleicht daher weil in Excel dann der Code mit End sub beendet wird.
Wenn ich die Batchdatei per hand ohne Excel ausführe. Läuft der Code super durch.
Hat jemand eine Anhung woran es liegt, dass es auch excel nicht funktioniert und die Batchdatei gleich wieder geschlossen wird?
Wie kann ich das Problem lösen?
Eine Wartezeit im VBA-Code bringt auch keine Erfolg.

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Batchdatei über VBA...
07.06.2018 13:01:51
Case
Hallo, :-)
... - probiere es mal so: ;-)
Option Explicit
Sub Main()
Dim WshShell As Object
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "C:\Temp\PC_IP.bat", 0, True
MsgBox "Weiter"
Set WshShell = Nothing
End Sub
Servus
Case

AW: Batchdatei über VBA...
07.06.2018 13:27:30
Jens
Hallo nun wird die Batch datei garnicht geöffnet und es kommt das popup weiter?
Welchen Sinn soll das ganze nun haben?
Falls Dein...
07.06.2018 13:36:56
Case
Hallo, :-)
... Pfad Leerzeichen enthält, musst Du es in doppelte Anführungszeichen setzen. ;-)
Ansonsten habe ich es getestet und es läuft ohne Probleme durch. ;-)
Eventuell zeigst Du uns mal Deinen Code...
Servus
Case

Anzeige
AW: Falls Dein...
07.06.2018 13:52:03
Jens
Also ich führe damit nur die Batch datei aus.

Sub Batchdatei_aufrufen()
Dim Pfad As String
Dim ID
Pfad = ThisWorkbook.Path & "\" & "SL" & "\" & "ServerUP.bat"
'Batchdatei aufrufen
Shell Pfad, 1
'ID = Shell(Pfad, 1)
'MsgBox ID
End Sub
Dann wird die Batch datei geöffnet.
Hier wird ein externes FTP programm (WINSCP) geöffnet (das man aber nicht sieht) und dem Programm werden Dateien zum Upload übergeben.
Funktioniert auch super.
Jedoch aus excel heraus geht die batch-datei kurz auf und dann wieder zu.
Normal bleibt die für ca 1 Minute offen.
Anzeige
AW: Falls Dein...
07.06.2018 13:53:58
Jens
Also mit dem Code von dir geht die Batch datei garnicht mehr auf. Sondern es kommt sofort der Weiterbutton
Also - da es bei mir...
07.06.2018 14:37:25
Case
Hallo, :-)
... beides funktioniert fallen mir nur noch ein Hinweis und einige Links ein: ;-)
Problematisch kann sein, wenn die Batchdatei auf einem Netzlaufwerk liegt.
Batch 1...
Batch 2...
Batch 3...
Und wie gesagt - Leerzeichen im Pfad musst Du "maskieren".
WshShell.Run Chr(34) & "C:\T E  MP\PC_IP.bat" & Chr(34), 0, True
Ansonsten stell es nochmal auf "Offen" - vielleicht hat noch jemand anderes eine Idee.
Servus
Case

Anzeige
AW: Also - da es bei mir...
07.06.2018 14:42:45
Jens
was meinst du mit maskieren?
ich habe im Pfad keine Leerschritte
das waäre mein Pfad
D:\Desktop\Schnittliste
So habe ich ihn auch im VBA-Code angegeben.
Versuche mal die...
07.06.2018 15:13:33
Case
Hallo, :-)
... Batchdatei in einen Standardordner zu verschieben z. B. "Dokumente" auf C im Benutzerverzeichnis. Nur zum testen. Wenn das geht musst Du im VBA Code noch mit ChDrive auf das Laufwerk wechseln (also D:\) und mit ChDir das Verzeichnis (D:\Desktop\Schnittliste) angeben.
Servus
Case

AW: Versuche mal die...
07.06.2018 15:25:30
Jens
genau das selbe...
die Datei wird garnicht mehr geöffnet.
Anzeige
AW: Batchdatei wird nicht durchlaufen. Sofort Ende
07.06.2018 16:33:55
Zwenn
Hallo Jens,
der Ansatz von Case ist schon richtig. Ich hatte mal das gleiche Problem und konnte es durch das Starten des Programms über die Konsole innerhalb des Windows Scripting Host lösen. Ob diese Verschachtelung bei Dir auch funktioniert musst Du ausprobieren. Nur über den WSH ging es bei mir auch nicht.
Hier einmal mein Code mit meinen damaligen Kommentaren. Beides angepasst auf Dein Problem. Der entscheidende Kommentar (für mich damals) ist fett hervorgehoben:

Sub main()
Dim WshShell As Object  'Variable zur Aufnahme des Windows Scripting Host Objektes
Dim Pfad As String
'Setzen des Pfades zur Batch-Datei
Pfad = ThisWorkbook.Path & "\SL\ServerUP.bat"
'Bereitstellung des Windows Scripting Host
Set WshShell = CreateObject("Wscript.Shell")
'Ausführen der Batch-Datei auf der Windows Konsole
'(Achtung: Wenn der Pfad Umlaute, das ß oder andere Nicht-Dos Sonderzeichen enthält,
'müssen diese als DOS-Kompatibel gesetzt werden! [ASCII  ANSI])
'Der Parameter /c hinter cmd schließt die Konsole (cmd) nach Batch-Ende
'(Es gibt alternativ den Parameter /k, der die Konsole offen lässt.
'Achtung: Bei Mehrfachaufrufen bleibt das Makro mit /k stehen)
'Durch setzen des vorletzten Parameter auf 0, führt der Windows Scripting Host
'die Konsole unsichtbar aus (1 macht sie sichtbar)
'Durch setzen des letzten Parameter auf True, wartet das Makro, bis der Windows
'Scripting Host die Konsole wieder beendet hat (Achtung: Bei False würde das Makro
'weiterlaufen und nicht warten, bis der aktuelle Batch-Lauf berechnet wurde)
WshShell.Run "cmd /c & Pfad", 0, True
MsgBox "Weiter"
Set WshShell = Nothing
End Sub
Viele Grüße,
Zwenn
Anzeige

156 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige