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

Mit VBA Dateien in einem Ordner vergleichen

Mit VBA Dateien in einem Ordner vergleichen
13.02.2005 21:39:29
Ben
Hallo Leute,
ich möchte per VBA jede Datei eines Ordners mit jeder anderen Datei dieses Ordners vergleichen - aber es klappt nicht.
Als Vorübung (!) habe ich eine Prozedur geschrieben, in der für jede Datei eines Ordners der Name jeder anderen Datei ausgegeben werden soll. Doch dabei erhalte ich eine Fehermeldung, die mir unbegreiflich ist. Hier der VBA-Code:

Private Sub dateien_vergleichen()
Dim sPath As String
Dim sAusgangsdatei As String
Dim sVergleichsdatei As String
sPath = "C:\Test\"
' ggf. abschließenden Backslash anfügen
If Right$(sPath, 1) <> "\" Then sPath = sPath & "\"
' erste Ausgangsdatei ermitteln
sAusgangsdatei = Dir$(sPath & "*.*", vbNormal Or vbHidden Or vbSystem Or vbReadOnly)
Do While Len(sAusgangsdatei) > 0 ' Kopf-Schleife über alle Dateien des Ordners
If InStr(1, "..", sAusgangsdatei, vbBinaryCompare) = 0 Then
' erste Vergleichsdatei ermitteln
sVergleichsdatei = Dir$(sPath & "*.*", vbNormal Or vbHidden Or vbSystem Or vbReadOnly)
Do While Len(sVergleichsdatei) > 0 ' Kopf-Schleife über alle Dateien des Ordners
If InStr(1, "..", sVergleichsdatei, vbBinaryCompare) = 0 Then
If sVergleichsdatei <> sAusgangsdatei Then
Ausgangsdatei und Vergleichsdatei gegenüberstellen:
Debug.Print "Ausgangsdatei: " & sAusgangsdatei & vbTab & "Vergleichsdatei: " & sVergleichsdatei
End If
End If
' Nächste Vergleichsdatei ermitteln - klappt wunderbar!
sVergleichsdatei = Dir$()
Loop
End If
' Nächste Ausgangsdatei ermitteln - doch hier kommt die Fehlermeldung !!!
sAusgangsdatei = Dir$()
Loop
End Sub

Also: ein und dieselbe Funktion funzt in der Binnen-Schleife - funzt aber nicht in der Außen-Schleife. Ich kapiere nicht, wieso.
Ja, vielleicht könnt Ihr mir verraten, wo der Fehler liegt.
Und für die ganz schlauen unter Euch - vielleicht könnt ihr mir sogar einen Hinweis geben, wie ich den Code erweitern muß, damit ich auch die Ausgangsdatei im Ausgangsordner mit jeder Datei in jedem Unterverzeichnis dieses Ordners vergleichen kann.
Herzlichen Dank im Voraus!
Einen guten Start in die neue Woche wünscht Euch
Ben.

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mit VBA Dateien in einem Ordner vergleichen
bst
Abend Ben,
Dir() läßt sich nicht verschachteln, bzw. in neudeutsch: Dir() ist nicht reentrant.
D.h. das geht einfach nicht. Lies zuerst alle Dateinamen in ein Array ein, und geh dann via zwei Schleifen darauf los.
Eine 'einfache' Rekursion geht bei Dir() aus dem gleichen Grunde nicht. Auch hier mußt Du zuerst immer alle Dateinamen eines Verzeichnisses speichern bevor Du dann in die Unterverzeichnisse gehen kannst. Einfache Abbhilfe: Nimm Application.FileSearch. Siehe VBA-Hilfe hierzu.
HTH, Bernd
AW: Mit VBA Dateien in einem Ordner vergleichen
13.02.2005 23:31:23
Ben
Hallo Bernd,
danke sehr für Deine wichtigen Hinweise! Die haben mir dicke weitergeholfen!
Prima! Für Dich weiterhin alles Gute!
Herzliche Grüße, Ben.
Anzeige
AW: Bitteschön & gleichfalls owT
bst
.

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige