Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
668to672
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
668to672
668to672
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

"Fehler" in Makroprozedur umgehen

"Fehler" in Makroprozedur umgehen
23.09.2005 13:22:48
Thorsten
Hallo liebes Forum,
ich habe folgendes Problem. Ich lasse per Makro Verschiedene Datein suchen, und deren Innhalt in einer anderen Arbeitsmappe sammeln.
Wenn alle Datein vorhanden sind, ist es auch kein Problem. Aber sobald eine fehlt, hält das Makro natürlich an. Ich möchte aber, dass wenn eine oder mehrere Datein fehlen, trotzdem die vorhandenen Datein eingelesen werden. Praktisch nach dem Motto: Anna.xls habe ich nicht gefunden, also gehe ich zu Bernadette.xls... usw.
Mit der GoTo Anweisung habe ich es schon probiert, aber die kann man wohl nur einmal in dem selben Makro verwenden, oder?
Hier ist ein Ausschnitt aus dem Makro (ist mit Makrorecorder aufgezeichnet):
Sub HolenJanuar()
Sheets("Geholt").Select
Cells.Select
Selection.ClearContents
Range("A1").Select
Workbooks.Open Filename:="C:\Programme\Elli\SammlungZzs\Anna.xls"
Range("B3:M7").Select
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Selection.Copy
ActiveWindow.Close
Range("A1:L5").Select
ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:= _
False
Range("A6").Select
Workbooks.Open Filename:="C:\Programme\Elli\SammlungZzs\Bernadette.xls"
Range("B3:M7").Select
Selection.Copy
ActiveWindow.Close
Range("A6:L10").Select
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:= _
False
Range("A11").Select
Workbooks.Open Filename:="C:\Programme\Elli\SammlungZzs\Christophorus.xls"
Range("B3:M7").Select
Selection.Copy
ActiveWindow.Close
Range("A11:L15").Select
ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:= _
False

Range("A16").Select
Workbooks.Open Filename:="C:\Programme\Elli\SammlungZzs\Elisabeth.xls"
Range("B3:M7").Select
Selection.Copy
ActiveWindow.Close
Range("A16:L20").Select
ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:= _
False
Range("A21").Select
Workbooks.Open Filename:="C:\Programme\Elli\SammlungZzs\Inobhutnahme.xls"
Range("B3:M7").Select
Selection.Copy
ActiveWindow.Close
Range("A21:L25").Select
ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:= _
False
und so weiter...
Im Voraus schonmal Danke für einen Tip
Gruß
Thorsten

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: "Fehler" in Makroprozedur umgehen
23.09.2005 13:32:16
Alexander
Hallo Thorsten.
Mit der Anweisung "On Error Resume Next" Übergeht der Makro Fehler und macht in der nächsten Zeile weiter. Das geht solange bis du den Befehl mit "On Error GoTo 0" wieder aufhebst.
Gruß, Alex.
Achtung! Problem!
23.09.2005 13:39:37
Franz
Hallo Thorsten, hallo Alex,
"On Error Resume Next" hat aber den Nachteil, dass damit einfach alles übergangen wird und am Ende vielleicht gar nichts mehr passiert.
Besser wäre es also, direkt an die Fehlerquelle zu gehen. Hier könntest Du also abfragen, ob die Datei überhaupt da ist, so in der Art (weiß leider grad nicht den genauen Befehl, aber in dieser Richtung solltest du überlegen):
If exist "C:\Programme\Elli\SammlungZzs\Anna.xls"
Workbooks.Open Filename:="C:\Programme\Elli\SammlungZzs\Anna.xls"
End if
Grüße
Franz
Anzeige
AW: Achtung! Problem!
23.09.2005 16:50:30
Luschi
Hallo Franz,
leider muß ich bei Recherchen im Internet immer öfter feststellen, daß bei
der Abfrage, ob 1 Datei existiert, die Exist-Funktion als Lösung angeboten wird.
In VB6 und Vba gibt es diese Funktion so aber nicht. Statt dessen läuft dieser Code:

If "" <> Dir("C:\Programme\Elli\SammlungZzs\Anna.xls", vbNormal) Then
Workbooks.Open Filename:="C:\Programme\Elli\SammlungZzs\Anna.xls"
Else
MsgBox "Sorry..., die Datei wurde nicht gefunden!"
End If

Gruß von Luschi
aus klein-Paris
Vollkommen richtig!
23.09.2005 21:29:37
Franz
Hallo Luschi,
danke für Deine Nachhilfe. Leider wusste ichs auswendig nicht richtig, und zum Nachschauen hatte ich nicht die Zeit. Wollte auf die Schnelle nur erreichen, dass Resume Next umgangen wird.
Grüße
Franz
Anzeige
AW: "Fehler" in Makroprozedur umgehen
23.09.2005 13:51:30
u_
Hallo,
das beste ist immer, Fehler zu vermeiden.

Sub HolenJanuar()
Dim arrFiles, i As Integer, strFile As String, wkbFile As Workbook
arrFiles = Array("Anna", "Elisabeth", "Bernadette")
Sheets("Geholt").Cells.ClearContents
For i = 0 To UBound(arrFiles)
strFile = "C:\Programme\Elli\SammlungZzs\" & arrFiles(i) & ".xls"
If Dir(strFile) <> "" Then
Set wkbFile = Workbooks.Open(strFile)
Range("B3:M7").Copy ThisWorkbook.Sheets("Geholt").Cells(i * 5 + 1, 1)
wkbFile.Close False
End If
Next i
End Sub
Gruß
Geist ist geil!
Anzeige
AW: "Fehler" in Makroprozedur umgehen
23.09.2005 19:26:55
Thorsten
Hallo Alexander, Franz, Luschi und u_
ich bin begeistert über die schnellen Antworten... Es funktioniert *freu*
On Error resume next war auch eine Idee von mir, aber in diesem Fall hat sich die Prognose von Franz leider bestätigt. Es ging nichts mehr.
u_ du hast recht, dass es besser ist Fehler zu vermeiden. Dein Vorschlag ist sehr Elegant und schön kurz (vieleicht lerne ich das ja auch noch, ohne Makrorecorder ;-)) Aber mit Franz`s, bzw. letztendlich Luschi`s Weg, bin ich für meine Arbeitsmappe am besten zurecht gekommen.
Vielen Dank an euch vier.
Gruß
Thorsten

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige