On error goto Anweisung in einer Schleife

Hallo,
ich habe ein Problem mit der on error goto Anweisung in VBA. Ich brauche ein Programm, dass ueber eine Schleife z.B. die Arbeitsmappen 1.xls - 10.xls oeffnet und jeweils bestimmte Anweisungen ausfuehrt. Falls allerdings eine dieser Arbeitsmappen nicht existiert, sollen andere Anweisungen ausgefuehrt werden. Ich habe versucht, das mit einer on error goto label Anweisung zu machen, leider funktioniert das aber immer nur einmal in einer Schleife, ab dem zweiten Durchlauf erhalte ich wieder eine Fehlermeldung, falls eine Arbeitsmappe nicht existiert…

Vielen Dank fuer die Hilfe,

axxel

Hallo,

schreib mal in die Fehlerroutine:

 Err.Number = 0
 On Error GoTo 0

Den On Error Goto … natürlich in die Schleife. :smile:

Aaaaber, gibt’s da nichts Besseres als ausgerechnet On Error? Kannst Du nicht vorher prüfen und den Fehler vermeiden? Bei ‚Goto‘ bekomme ich immer Gänsehaut.

Gruß, Rainer

Hallo Rainer,

schreib mal in die Fehlerroutine:

Err.Number = 0
On Error GoTo 0

hat leider immernoch nicht funktioniert.

Aaaaber, gibt’s da nichts Besseres als ausgerechnet On Error?
Kannst Du nicht vorher prüfen und den Fehler vermeiden? Bei

Das waere natuerlich noch viel besser, leider weiss ich keine Moeglichkeit, das zu pruefen, wie geht sowas?

Gruss,

Axxel

Hallo,

schreib mal in die Fehlerroutine:

Err.Number = 0
On Error GoTo 0

hat leider immernoch nicht funktioniert.

hmmm. Dann müssen wir uns das mal genauer ansehen.

Aaaaber, gibt’s da nichts Besseres als ausgerechnet On Error?
Kannst Du nicht vorher prüfen und den Fehler vermeiden? Bei

Das waere natuerlich noch viel besser, leider weiss ich keine
Moeglichkeit, das zu pruefen, wie geht sowas?

Poste doch mal den relevanten Code. Reinhard weiß sicher, wie das ohne ‚On Error‘ geht.

Gruß, Rainer

Hallo,

Poste doch mal den relevanten Code. Reinhard weiß sicher, wie
das ohne ‚On Error‘ geht.

For YearRef = 4 To 6
 
For MonthRef = 1 To 12

fileref = "C:\Documents and Settings\rix\Desktop\sek\200" & YearRef & "\" & MonthRef & ".xls"

On Error GoTo DataMiss

Workbooks.Open FileName:=fileref

'jetzt folgen weitere Anweisungen...

continue:

next MonthRef
next YearRef

exit sub

DataMiss:

FileExist = False

Err.Number = 0
On Error GoTo 0

'jetzt folgen entsprechende Anweisungen
GoTo Continue

end sub

Wenn Monthref groesser als 2 wird und die Datei nicht existiert, gibt es eine Fehlermeldung an der Stelle workbooks.open …

Gruesse und tausend Dank,

axxel

Hallo,

For YearRef = 4 To 6

For MonthRef = 1 To 12

fileref = "C:\Documents and Settings\rix\Desktop\sek\200" &
YearRef & "\" & MonthRef & ".xls"

On Error GoTo DataMiss

Workbooks.Open FileName:=fileref

ahhhh, ein Pfad und ein ‚Open‘, dann kann ich ohne VBA-Kenntnisse helfen. :smile:

In die Deklaration des Projekts:

Private Declare Function PathFileExists Lib "shlwapi.dll" \_
Alias "PathFileExistsA" (ByVal pszPath As String) As Long

und dann kannst Du mit:

 If PathFileExists(fileref) Then
 Workbooks.Open FileName:=fileref
 Else
 'Code, wenn die datei nicht existiert
 End If

den On Error weglassen. :smile:

Ohne GoTo und ohne Fehler finde ich’s schöner.

Gruß, Rainer

Hallo,

ganz vielen Dank, funktioniert ausgezeichnet und ist natuerlich deutlich schoener und sauberer !

Gruesse,

Axxel