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

Wie in VBA Ende von Bat Datei abwarten?

Wie in VBA Ende von Bat Datei abwarten?
Bat
Hallo und Guten Morgen,
auch wenn es nicht so heiß wäre, fiele mir keine Lösung für folgendes Problem ein.
Ich starte in meinem VBA Code eine oder mehrere Bat Dateien.
Bis diese allerdings ausgeführt sind, ist der VBA Code ja schon viel weiter.
Wie kann ich im Code festlegen, dass der VBA Code erst weitergeht, wenn
die Bat Datei ausgeführt wurde. Hier mal ein Auszug aus meinem Code:
Sub Bat
strShellBatches = Array("GetPublishesSMP.bat", "GetPublishesACC.bat", "GetPublishesPHO.bat", "  _
_
GetPublishesHDS.bat")
strShellMasterFiles = Array("Master Publishes SMP.xlsx", "Master Publishes ACC.xlsx", " _
Master Publishes PHO.xlsx", "Master Publishes HDS.xlsx")
For lngT = LBound(strShellBatches) To UBound(strShellBatches)
strShellBatches(lngT) = Pfad & strShellBatches(lngT)
If Dir(strShellBatches(lngT)) = "" Then
MsgBox "Die erforderlichen Batchdateien sind nicht vorhanden, bitte prüfen!",  _
vbCritical
End If
Shell strShellBatches(lngT), 1 'HIER HAKT ES!!!!!!!!!!
Next lngT
For lngT = LBound(strShellMasterFiles) To UBound(strShellMasterFiles)
For Each wb In Workbooks
If wb.Name = strShellMasterFiles(lngT) Then
Workbooks(strShellMasterFiles(lngT)).Save
Workbooks(strShellMasterFiles(lngT)).Close , False
End If
Next wb
Next lngT
OverViewWB.Activate
MsgBox "Alle erforderlichen SQL Statements wurden erfolgreich ausgeführt", vbInformation
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Wie in VBA Ende von Bat Datei abwarten?
13.07.2010 08:53:25
Bat
Hallo Holger,
gib bei Google mal ShellWait ein oder kopiere dies in ein Modul:

Option Explicit
Private Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" _
(ByVal hProcess As Long, ExitCode As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" _
(ByVal DesiredAccess As Long, ByVal InheritHandle As Long, _
ByVal ProcessId As Long) As Long
Public Function ShellWait(Exec As String, _
Optional WindowStyle As VbAppWinStyle = vbMinimizedFocus) _
As Long
Dim nTaskId As Long
Dim nHProcess As Long
Dim nExitCode As Long
Const STILL_ACTIVE = &H103
Const PROCESS_QUERY_INFORMATION = &H400
nTaskId = Shell(Exec, WindowStyle)
nHProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, nTaskId)
Do
DoEvents
GetExitCodeProcess nHProcess, nExitCode
Loop While nExitCode = STILL_ACTIVE
CloseHandle nHProcess
ShellWait = nExitCode
End Function
Sub test()
ShellWait "c:\temp\text.bat"
MsgBox "Fertig!"
End Sub

Gruß Matthias
Anzeige
AW: Wie in VBA Ende von Bat Datei abwarten?
13.07.2010 09:22:29
Bat
Hallo Matthias,
Danke, so einen ähnlichen Code hatte ich probiert, da hat er sich allerdings aufgehängt.
Wie muss ich den Code denn in meinem implementieren?
Soll ich zwei Unterprozeduren machen und in der Schleife diese aufrufen?
AW: Wie in VBA Ende von Bat Datei abwarten?
13.07.2010 11:19:37
Bat
Hallo Holger,
ich hab grade keine Zeit Deinen Code durchzuschauen und stell die Thread auf offen.
Gruß Matthias
Gelöst! Danke Matthias!
13.07.2010 14:38:26
Holger
Hallo Matthias,
dein Code funktioniert.
Wenn man den Code im Einzelschritt laufen lässt, klappt es natürlich nicht,
daran hätte ich gleich denken können.
Danke Dir nochmal!
Gruß
Holger

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige