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

prüfen ob Blatt vorhanden ist, wenn nicht, dann in

prüfen ob Blatt vorhanden ist, wenn nicht, dann in
29.08.2006 14:47:41
Dieter.K
Hallo Forum!
Mit Hilfe von Franz und der Herber-CD benutze ich folgenden Code um Daten aus geschlossenen Mappen auszulesen und in eine Tabelle dieser Mappe einzutragen.

Sub Einlesen()
Dim iCounter As Integer, iRow As Integer, i As Integer
Dim sfile As String, sPath As String
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
With Application.FileSearch
.LookIn = Range("B1").Value
.FileType = msoFileTypeExcelWorkbooks
.Execute
For iCounter = 1 To .FoundFiles.Count
sfile = Dir(.FoundFiles(iCounter))
sPath = WorksheetFunction.Substitute(.FoundFiles(iCounter), sfile, "")
For i = 6 To 8
With Cells(iRow, i - 5)
.Formula = "='" & sPath & "[" & sfile & "]Kundendaten'!E" & i
.Value = .Value
End With
Next
For i = 14 To 22
With Cells(iRow, i - 10)
.Formula = "='" & sPath & "[" & sfile & "]Kundendaten'!E" & i
.Value = .Value
End With
Next
With Cells(iRow, 13)
.Formula = "='" & sPath & "[" & sfile & "]Kundendaten'!E24"
.Value = .Value
End With
With Cells(iRow, 14)
.Formula = "='" & sPath & "[" & sfile & "]Kundendaten'!E26"
.Value = .Value
End With
With Cells(iRow, 15)
.Formula = "='" & sPath & "[" & sfile & "]Kundendaten'!F6"
.Value = .Value
End With
With Cells(iRow, 16)
.Formula = "='" & sPath & "[" & sfile & "]Info'!C2"
.Value = .Value
End With
iRow = iRow + 1
Next iCounter
End With
End Sub

So weit so gut! Wie kann ich jedoch einen Fehler abfangen wenn eines der Blätter nicht vorhanden ist? Dann soll die Schleife einfach weiter bis zum Ende weiter ausgeführt werden, ohne das eine Fehlermeldung auftaucht. Könnt Ihr mir helfen?
Danke im Voraus.
Gruß
Dieter.K

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

Betreff
Datum
Anwender
Anzeige
On Error Resume Next
29.08.2006 14:57:21
ChrisL
Hallo Dieter
Füge die im Titel erwähnte Zeile am Anfang vom Code ein. Ist allerdings eine "gefährliche" Methode, weil in der Regel würde man die Fehler abfangen und nicht einfach überspringen.
Gruss
Chris
AW: On Error Resume Next
29.08.2006 15:30:03
Dieter.K
Hallo Chris,
vielen Dank für die Info. Funktioniert leider nicht. Zum Teil befinden sich Mappen in dem Verzeichnis die keinen der gesuchten Blattnamen aufweisen. Wenn dieser Fehler auftritt öffnet sich ein Fenster in dem gefragt wird, mit welchem Tabellenblatt verknüpft werden soll. Genau dieses Fenster möchte ich unterdrücken, heißt: aus der Mappe die eines oder mehrere der benötigten Tabellenblätter nicht enthält, sollen keine Daten ausgelesen werden und einfach die nächsten Mappe (next iCounter) weiter abgearbeitet werden.
Hast Du eventuell eine Idee?
Gruß
Dieter.K
Anzeige
DisplayAlerts = False
29.08.2006 15:43:18
ChrisL
Hallo Dieter
OK, das ist kein Error sondern ein Alert. Probier mal...
On Error Goto ErrorHandler
Application.DisplayAlerts = False
' Dein Code
Application.DisplayAlerts = True
Exit Sub
ErrorHandler:
Application.DisplayAlerts = True
MsgBox "Es ist ein Fehler aufgetreten. Der Vorgang wurde unterbrochen."
Gruss
Chris
AW: DisplayAlerts = False
29.08.2006 23:03:27
Dieter.K
Hallo Chris,
Danke für Deine Hilfe, aber funzt leider immer noch nicht. Dürfte ja eigentlich auch kein "Display-Alert" sein, da ja in dem Fenster nur gefragt wird ob mit Tabellenblatt 1 oder 2 oder 3 (bei einer Standardtabelle) verknüpft werden soll. In einer neuen Mappe fehlen eben die benötigten Blätter "Kundendaten" und "Info".
Werd mal ein wenig weiter probieren.
Danke nochmals.
Gruß
Dieter.K
Anzeige
AW: On Error Resume Next
29.08.2006 15:43:41
Reinhard
Hi Dieter,
ungetestet als Ansatz:
For iCounter = 1 To .FoundFiles.Count
sFile = Dir(.FoundFiles(iCounter))
sPath = WorksheetFunction.Substitute(.FoundFiles(iCounter), sFile, "")
For Each bl In Workbooks(sFile)
If bl.Name = "Kundendaten" Then
For i = 6 To 8
With Cells(iRow, i - 5)
.Formula = "='" & sPath & "[" & sFile & "]Kundendaten'!E" & i
.Value = .Value
End With
Next
For i = 14 To 22
With Cells(iRow, i - 10)
.Formula = "='" & sPath & "[" & sFile & "]Kundendaten'!E" & i
.Value = .Value
End With
Next
With Cells(iRow, 13)
.Formula = "='" & sPath & "[" & sFile & "]Kundendaten'!E24"
.Value = .Value
End With
With Cells(iRow, 14)
.Formula = "='" & sPath & "[" & sFile & "]Kundendaten'!E26"
.Value = .Value
End With
With Cells(iRow, 15)
.Formula = "='" & sPath & "[" & sFile & "]Kundendaten'!F6"
.Value = .Value
End With
Exit For
End If
Next bl
For Each bl In Workbooks(sFile)
If bl.Name = "Info" Then
With Cells(iRow, 16)
.Formula = "='" & sPath & "[" & sFile & "]Info'!C2"
.Value = .Value
End With
iRow = iRow + 1
Next iCounter
Exit For
End If
Next bl

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: On Error Resume Next
29.08.2006 23:06:37
Dieter.K
Hallo Reinhard,
Danke für die Info. Kannst Du mir eventuell erklären wie ich Deinen Code in den vorhanden einbauen muß? Stehe hier leider etwas auf dem Schlauch. Werde auf jeden Fall in den nächsten Tagen mit Deinem Code mal etwas experimentieren.
Danke
Gruß
Dieter.K

98 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige