tkacbgind
Goto Top

Überprüfung in Batch Datei

Hallo,

ich habe eine ganz einfache Batch Datei sie einfach nur 16 Excell Dateien öffnen soll

@echo off
echo Diese Datei öffnet die Excel Dateien
Start abc
Start def
Start usw
:end


Wie kann ich überprüfen ob alle Datein geöffnet wurden?
Wenn eine nicht geöffnet wurde soll eine kurze Fehlermeldung kommen die eine Nutzereingabe erfordert.

Danke für die Rückmeldungen

MfG
TKaCbGinD

Content-Key: 259334

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

Printed on: April 16, 2024 at 05:04 o'clock

Member: miniversum
miniversum Jan 09, 2015 at 14:14:59 (UTC)
Goto Top
Hallo,

mit dem Befehl Tasklist kannst du den Fenstertitel ausgeben lassen.
Du suchst dann also einfach nach z.B. "Microsoft Excel - Mappe1" und siehst ob es existiert.

Zum Test kannst du mal Tasklist /V eingeben

Gruß
...
Member: colinardo
Solution colinardo Jan 09, 2015, updated at Jan 12, 2015 at 09:26:35 (UTC)
Goto Top
Moin TKaCbGinD,
oder du machst das mit einem VBS-Script:
On Error Resume Next
dim arrArbeitsmappen,objExcel, wb
'Pfade der Arbeitsmappen welche geöffnet werden sollen  
arrArbeitsmappen = Array("C:\Datei1.xlsx","C:\Datei2.xlsx","C:\Datei3.xlsx")  
'Excel sichtbar starten  
Set objExcel = CreateObject("Excel.Application")  
objExcel.DisplayAlerts = False
objExcel.Visible = True

' Für jede Arbeitsmappe  
For i = 0 To UBound(arrArbeitsmappen)
	' öffne die Arbeitsmappe   
        set wb = objExcel.Workbooks.Open(arrArbeitsmappen(i))
	'wenn die Mappe schreibgeschützt geöffnet wurde ist sie gesperrt, also breche den Vorgang ab  
        if wb.ReadOnly then
            msgbox "Die Arbeitsmappe " & arrArbeitsmappen(i) & " ist durch einen anderen Benutzer gesperrt. Der Vorgang kann nicht fortgesetzt werden", vbExclamation  
             objExcel.DisplayAlerts = True
             wscript.quit
	End If
Next
Grüße Uwe
Member: tkacbgind
tkacbgind Jan 09, 2015 at 18:42:20 (UTC)
Goto Top
Hallo, vielen dank für die schnellen Antworten.
Mit dem Tasklist Befehl ist mir leider nicht so ganz geholfen, das VBS verstehe ich noch nicht ganz.
Kann es leider auch erst am Montag wieder testen.

Vllt noch zur Erklärung:
Die zu öffnenden Dateien liegen auf verschiedenen Speicherorten auf Netzlaufwerken in der Firma.

Alle Dateien werden benötigt um ein umfangreiches Makro auszuführen.

Ich möchte halt auf einen Blick wissen ob alle Dateien geöffnet wurden und nicht eine durch einen User blockiert wurde.

Eine Abfrage nach einzelnen Dateien bringt mich da nicht wirklich weiter.

Vielen Dank auf jeden Fall schon mal für eure Mühe
Member: colinardo
Solution colinardo Jan 09, 2015, updated at Jan 12, 2015 at 09:26:39 (UTC)
Goto Top
Ich möchte halt auf einen Blick wissen ob alle Dateien geöffnet wurden und nicht eine durch einen User blockiert wurde.
Hab das oben mal dahingehend angepasst. Aber wieso macht ihr die Überprüfung und das Öffnen nicht direkt schon in dem Makro, wie mit der obigen VBS? Dann weiß das Makro nämlich schon selber ob die Files durch einen anderen User blockiert sind (ReadOnly), und fängt erst gar keine Verarbeitung an !

Grüße Uwe
Member: tkacbgind
tkacbgind Jan 12, 2015 at 08:10:44 (UTC)
Goto Top
Hallo Uwe,

vielen Dank!

Das Öffnen und die Fehlermeldungen funktionieren über das VBS.

Nun wollen die Miatarbeiter sich aber an nichts neues gewöhnen face-sad

Also alles weiterhin mit der Batch öffnen...Angst vor Veränderung.

Es wäre so einfach gewesen.

Gibt es also eine Möglichkeit das ich im Makro oder in der Batch kurz abfrage ob alle Dateien offen sind bevor das "Hauptmakro" startet?

Danke
Member: colinardo
Solution colinardo Jan 12, 2015 updated at 09:26:44 (UTC)
Goto Top
Gibt es also eine Möglichkeit das ich im Makro oder in der Batch kurz abfrage ob alle Dateien offen sind bevor das "Hauptmakro" startet?
Siehe den Code oben, du kannst ja anstatt der MsgBox eine Variable auf True setzen wenn nicht alle Files geöffnet werden konnten. Diese überprüfst du zum Schluss und entscheidet damit letztendlich ob das Makro gestartet wird oder nicht, ganz einfach.
Also das ganze in euer Makro einbauen, feddich. Ich sehe hier das Problem nicht ...

Per purem Batch kannst du erst mal knicken, außer du startest das VBS-Script aus der Batch, das geht natürlich auch:
cscript.exe //NOLOGO c:\script.vbs
Wenn du willst kann das VBS-Script
auch einen Wert in die Batch zurückgeben je nachdem ob alle Files geöffnet wurden oder nicht, dann kannst du entscheiden was geschieht.
Die Möglichkeiten sind hier vielfältig.

Aber wo muss man sich umgewöhnen wenn das alles doch nur ein Doppelklick ist ???
Member: tkacbgind
tkacbgind Jan 12, 2015 at 09:26:23 (UTC)
Goto Top
So erledigt face-smile

Frag nicht was daran kompliziert ist einen anderen Klick zu machen als vorher...ich werde es nie verstehen.

Vielen Dank für die super Hilfe.