Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
520to524
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
520to524
520to524
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Dateien auslesen und kein Ende in Sicht...

Dateien auslesen und kein Ende in Sicht...
23.11.2004 13:55:35
Stefan
Hallo Mädels und Jungs,
nun sollte es also soweit sein. Mein macro gestartet und ca. 3h rödeln lassen. nach 1002 Datensätzen dann der Laufzeitfehler und ausstieg des Macros.
Grund:
Irgendwer hat während des durchlaufes eine Datei.xls gelöscht. Nun konnte Macro die schon vorher identifizierte Datei nicht öffnen und machte Schluss.
Frage: Kann man das irgendwie überspringen?
Hier noch mal der Beginn meines Macros, welches die *.xls identifiziert und öffnet.

Sub Daten_suchen()
Dim FS As FileSearch, wsh1 As Worksheet, i As Integer, q, c, t, h As String
Set wsh1 = ThisWorkbook.Sheets(1)
Set FS = Application.FileSearch
Let q = 5
With FS
.LookIn = ThisWorkbook.Path
.Filename = "*.xls"
.SearchSubFolders = True
If .Execute > 0 Then
For i = 1 To .FoundFiles.Count
Workbooks.Open .FoundFiles(i), UpdateLinks:=0, ReadOnly:=True
Worksheets(1).Select

Ach ja mit UpdateLinks:=0 unterdrücke ich doch die
Nachfrage ob bei verknüpften Daten eine aktualisierung durchgeführt werden soll, oder?

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

Betreff
Datum
Anwender
Anzeige
AW: Dateien auslesen und kein Ende in Sicht...
Jan
Hi Stefan,
Für eine Analyse brauch man schon den vollständigen Code. An diesem Ausschnitt kann ich nicht erkennen, wo der Fehler ist.
Jan
AW: Dateien auslesen und kein Ende in Sicht...
23.11.2004 16:44:49
Stefan
Der fEhler liegt hier:

Workbooks.Open .FoundFiles(i), UpdateLinks:=0, ReadOnly:=True

weil die datei die er am anfang identifiziert hat bis zu dem Zeitpunkt wo er sie abarbeiten wollte gelöscht war.
Wenn er jetzt eine datei öffnen will, die nicht da ist steigt er aus.
wenn du den ganzen code willst bitte sehr:

Sub Daten_suchen()
Dim FS As FileSearch, wsh1 As Worksheet, i As Integer, q, c, t, h As String
Set wsh1 = ThisWorkbook.Sheets(1)
Set FS = Application.FileSearch
Let q = 5
With FS
.LookIn = ThisWorkbook.Path
.Filename = "*.xls"
.SearchSubFolders = True
If .Execute > 0 Then
For i = 1 To .FoundFiles.Count
Workbooks.Open .FoundFiles(i), UpdateLinks:=0, ReadOnly:=True
Worksheets(1).Select
If Range("A1") = "Forfaitierungsabrechnung" Then
With wsh1
'Daten kopieren
.Cells(q, 1) = Range("D4")
.Cells(q, 2) = Range("D6")
.Cells(q, 4) = Range("d20")
.Cells(q, 11) = Range("d42")
.Cells(q, 9) = Range("d16")
.Cells(q, 10) = Range("d3")
.Cells(q, 12) = "=e" & q & "/k" & q
.Cells(q, 13) = Range("d14")
.Cells(q, 14) = Range("d13")
If Range("d15") <> "" Then
.Cells(q, 15) = Range("d15")
Else
.Cells(q, 15) = "siehe Zahlungsverpflichteter"
End If
'Kopieren der variablen Daten
If Range("b37") <> "" Then
.Cells(q, 6) = 14
.Cells(q, 7) = Range("b37")
Else
If Range("b36") <> "" Then
.Cells(q, 6) = 13
.Cells(q, 7) = Range("b36")
Else
If Range("b35") <> "" Then
.Cells(q, 6) = 12
.Cells(q, 7) = Range("b35")
Else
If Range("b34") <> "" Then
.Cells(q, 6) = 11
.Cells(q, 7) = Range("b34")
Else
If Range("b33") <> "" Then
.Cells(q, 6) = 10
.Cells(q, 7) = Range("b33")
Else
If Range("b32") <> "" Then
.Cells(q, 6) = 9
.Cells(q, 7) = Range("b32")
Else
If Range("b31") <> "" Then
.Cells(q, 6) = 8
.Cells(q, 7) = Range("b31")
Else
If Range("b30") <> "" Then
.Cells(q, 6) = 7
.Cells(q, 7) = Range("b30")
Else
If Range("b29") <> "" Then
.Cells(q, 6) = 6
.Cells(q, 7) = Range("b29")
Else
If Range("b28") <> "" Then
.Cells(q, 6) = 5
.Cells(q, 7) = Range("b28")
Else
If Range("b27") <> "" Then
.Cells(q, 6) = 4
.Cells(q, 7) = Range("b27")
Else
If Range("b26") <> "" Then
.Cells(q, 6) = 3
.Cells(q, 7) = Range("b26")
Else
If Range("b25") <> "" Then
.Cells(q, 6) = 2
.Cells(q, 7) = Range("b25")
Else
If Range("b24") <> "" Then
.Cells(q, 6) = 1
.Cells(q, 7) = Range("b24")
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
'Kennzeichnung als Erledigt
If .Cells(q, 7) < Date Then
.Cells(q, 8) = "erledigt"
Else
.Cells(q, 8) = "laufend"
End If
End With
Worksheets(2).Select
With wsh1
.Cells(q, 5) = Range("e54")
End With
Let q = q + 1
End If
'Kopieren abgeschlossen
ActiveWorkbook.Close False
Next i
End If
End With
'abschluss der Tabelle
With wsh1
Let q = q - 1
Let t = q + 2
.Cells(t, 1) = "Anzahl:"
.Cells(t, 2) = "=SUBTOTAL(3,B5:B" & q & ")"
.Cells(t, 11) = "Summe:"
.Cells(t, 12) = "=SUBTOTAL(9,L5:L" & q & ")"
End With
MsgBox ("Es wurden " & q - 4 & " Dateien importiert")
End Sub

Anzeige
AW: Dateien auslesen und kein Ende in Sicht...
xule
Hallo
Wenn ich so viele Dateien "bearbeiten" müsste, würde ich die Nicht erst alle zählen, merken und dann wieder von eins anfangen die Mappen zu öffnen...
Sondern: suchen, öffnen, "bearbeiten", schließen... nächste suchen...
Vielleicht hilft dir das ja weiter.

Sub alle_Dateien_Verzeichnis() '
strPath = "C:\Temp\" 'Pfad des Verzeichnisses ggf. anpassen
strExt = "*.xls"       'Dateiextension ggf. anpassen
Dim strFile As String
If strPath = "" Then
Exit Sub
Else
strFile = Dir(strPath & strExt)
Do While Len(strFile) > 0
Workbooks.Open FileName:=strPath & strFile
'mach was damit
Workbooks(strFile).Close
strFile = Dir() ' nächste Datei
Loop
End If
End Sub


Anzeige
AW: Dateien auslesen und kein Ende in Sicht...
23.11.2004 17:08:05
Stefan
Hi xule,
Dank das ist ja viel besser.
Wie kann ich den die Suche jetzt auch auf subfolders ausdehnen?
noch ne Idee..
xule
Hallo nochmal
prüf vor dem öffnen, ob die datei noch da ist.


   
'...
If .Execute > 0 Then
  
For i = 1 To .FoundFiles.Count
  DiskFileExists = 
CBool(Len(Dir(.FoundFiles(i))))
  
If DiskFileExists = True Then
    Workbooks.Open .FoundFiles(i), UpdateLinks:=0, ReadOnly:=
True
        Worksheets(1).Select
        
'...
End If
'... 



Gruß UD
Anzeige
AW: noch ne Idee..
23.11.2004 17:38:20
Stefan
Vielen Dank, dass Du Dich so ausführlich damit beschäftigst.
Habe jetzt die 2. Version gewählt, w/des Durchsuchen der Subfolder.
Morgen Früh startet die nächste Runde, bis er wieder aufhört weil irgendwas nciht stimmt... mal schauen
Danke erstmal

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige