Programmabruch trotz Fehlerroutine?

13/09/2007 - 21:04 von Alex Jäger | Report spam
Hallo, ich möchte aus mehreren Tabellenblàttern Daten auslesen und in
eine Gesamttabelle eintragen, dazu öffne ich diese Tabellenblàtter
folgend:

On Error GoTo fehler:
Workbooks.Open "C:\Daten\" & DateiSpeicherName & ".xls"

...

fehler:
MsgBox "Datei nicht gefunden: " & DateiSpeicherName

Es kann aber vorkommen, dass ein Tabellenblatt nicht vorhanden ist.
Bei der ersten nicht gefundenen Datei klappt das wunderbar mit der
Fehlermeldung, nur ab der zweiten nicht gefundenen Datei bricht das
Programm ab und meldet "Laufzeitfehler 1004 Datei nicht gefunden".

Wie kann ich dieses Problem beheben?

Danke
Alex
 

Lesen sie die antworten

#1 Reiner Wolff
14/09/2007 - 00:34 | Warnen spam
Moin Alex,

*Alex Jàger* schrieb:
Hallo, ich möchte aus mehreren Tabellenblàttern Daten auslesen und in
eine Gesamttabelle eintragen, dazu öffne ich diese Tabellenblàtter
folgend:

On Error GoTo fehler:
Workbooks.Open "C:\Daten\" & DateiSpeicherName & ".xls"

...



Hier fehlt ein
Exit Sub

fehler:
MsgBox "Datei nicht gefunden: " & DateiSpeicherName



Ich würde zur Prüfung, ob eine Datei existiert, nicht die
Fehlerabfangroutinen bemühen, sondern _vor_ dem Öffnen eine Prüfung selber
vornehmen:
Dim strDatei As String
strDatei = "C:\Daten\" & DateiSpeicherName & ".xls"
If Dir( strDatei ) <> "" then
Workbooks.Open strDatei
end If

Es kann aber vorkommen, dass ein Tabellenblatt nicht vorhanden ist.



Das kann zwar sein, Deine Problembeschreibung setzt allerdings auch keine
besonderen Tabellenblàtter voraus. Und mindestens 1 Tabellenblatt ist in
einer XLS-Datei immer vorhanden.

Bei der ersten nicht gefundenen Datei klappt das wunderbar mit der
Fehlermeldung, nur ab der zweiten nicht gefundenen Datei bricht das
Programm ab und meldet "Laufzeitfehler 1004 Datei nicht gefunden".



Um dieses Verhalten überhaupt beurteilen zu können, fehlen leider Infos,
wie Du überhaupt Dateien durchlàufst. Hast Du da irgendwo eine Schleife
drumrumgebaut, wie wird Deine Fehlerroutine wieder verlassen?

Wie kann ich dieses Problem beheben?



Prinzipiell klingt das danach, als würdest Du die VBA-Standardmeldung
erhalten, obwohl Du - nach Deinem Gefühl - eine Fehlerabfangroutine
eingebaut hast. Dieses Verhalten tritt regelmàßig nur in 2 Fàllen auf:
- die Fehlerroutine greift überhaupt nicht, weil sie nicht angesprungen
wurde
- die Fehlerroutine kann den Fehler nicht beheben, weil sie bereits einen
anderen Fehler zu behandeln hat. Jede Fehlerroutine kann immer nur einen
Fehler behandeln und muss diesen zu einem Abschluss bringen. Tritt bei
diesem Versuch ein weiterer Fehler auf (und ist in keiner aufrufenden
Prozedur eine weitere Abfangroutine), wird die Standardmeldung
angezeigt.

Ich vermute, bei Dir liegt letzterer Fall vor.
Du benutzt in Deiner Fehlerroutine nicht zufàllig mit einer
Resume Next-Anweisung?

Gruß aus Kiel
Reiner
So weit wir wissen, hatte unser Computer nie einen unentdeckten Fehler.

Ähnliche fragen