Zugriffsende auf Datei erkennen

Hi Experten,

ich habe von einem VBA-Programm aus mittels „SHELL“ eine BAT-Datei gestartet. Diese schreibt Text in eine TXT-Datei. Solange die Bearbeitung der Batchdatei läuft soll die VBA-Anwendung angehalten werden.

Da diese Überprüfung, ob die Batchdatei beendet ist oder nicht, (angeblich) nicht so einfach geht, habe ich mich damit beholfen, daß ich die TXT-Datei solange versuche umzubenennen bis dieses Umbenennen ohne Fehler (verursacht durch einen Zugriff auf die durch die Batchdatei geöffnete TXT-Datei) durchgeführt wurde.

Meistens funzt das auch sehr gut. Aber eben nur meistens. Denn manchmal läuft das VBA-Programm weiter obwohl die Batchdatei noch am Werkeln ist. Das würde doch heißen, daß der Datenkanal zu der Textdatei kurz geschlossen und dann wieder geöffnet wird, oder?

Könnt ihr diese Vermutung bestätigen? Oder habt ihr eine andere Erklärung parat?

Vielen Dank
Martin

hallo martin

wundert mich, dass das überhaupt jemals funktioniert.

ok - hängt davon ab, wie du in die textdatei reinschreibst. aber wenn du das mit einem
echo sadfasf > test.txt
machst, dann wird die datei nur für den schreibzugriff selbst gesperrt, nicht für die denkpausen zwischen den einzelnen befehlen.

ich würde es so machen (primitiv aber effektiv):
dein vba-code wartet nicht auf die ausgabedatei sondern auf eine zusätzliche datei. dein vba-code stellt zuvor sicher, dass die datei nicht existiert. dein batch-file erzeugt sie ganz zum schluss. so lässt sich das ganze sehr leicht synchronisieren.

bsp:

doit.bat

@echo off
echo hallo \> test.txt
echo bin \>\> test.txt
echo fast \>\> test.txt
echo fertig \>\> test.txt
echo . \> test.ok

dein vba-code muss lediglich in einer schleife warten, bis fileexists(text.ok) true liefert.

lg
erwin

ich habe von einem VBA-Programm aus mittels „SHELL“ eine
BAT-Datei gestartet. Diese schreibt Text in eine TXT-Datei.
Solange die Bearbeitung der Batchdatei läuft soll die
VBA-Anwendung angehalten werden.

Hi Martin,

probier dieses mal:

http://www.dbwiki.de/wiki.php?title=VBA_Tipp:_Prozes…

Gruß
Reinhard