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

Verzeichnisse vergleichen, identische auflisten

Verzeichnisse vergleichen, identische auflisten
11.03.2008 11:18:56
{mskro}
Hallo Excelfreunde,
nun benötige auch ich mal wieder etwas Hilfe.
Kennt jemand einen Weg per VBA zwei Verzeichnisse mit Unterverzeichnissen gegenüberzustellen und Datein mit gleichem Namen, gleicher Größe und gleichem Datum aufzulisten?
Verzeichnis 1 steht in Zelle"A1"
Verzeichnis 2 steht in Zelle "B1"
Jetzt sollen gerne die identischen Dateinamen mit Path untereinander von Zelle "A2" abwärts stehen.
Gruß Manfred

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verzeichnisse vergleichen, identische auflisten
11.03.2008 13:20:00
Tino
Hallo,
habe mal etwas zusammengebastelt.
Ist mal ein Anfang, es werden Dateien mit gleichen Namen aufgelistet.
Benötig den Verweis auf >>>Microsoft Scripting Runtime Verzeichnis 1 muss in Zelle"A1" stehen
Verzeichnis 2 muss in Zelle "B1" stehen
Gruß Tino

'Dateien aus Ordner Dokumentieren
Sub DateiAuflisten()
Dim MeFile As String
Dim SuchFile As String
Dim i As Long, a As Long
'On Error GoTo Fehler
With Application.FileSearch
.NewSearch
.LookIn = Range("A1") & "\"
.SearchSubFolders = True
.Filename = "*.*" 'Datei Typ
.Execute
For i = 1 To .FoundFiles.Count
'    MsgBox (.FoundFiles(i))
SuchFile = Right(.FoundFiles(i), Len(.FoundFiles(i)) - InStrRev(.FoundFiles(i), "\"))
MeFile = ListFilesInFolder(Range("B1"), True, SuchFile) 'nur Dateiname anzeigen
If MeFile > "" Then
a = a + 1
Cells(1 + a, 2) = MeFile
Cells(1 + a, 1) = SuchFile
End If
Next i
End With
If a = 0 Then MsgBox "Es wurden keine gleichen Dateien gefunden!"
Exit Sub
Fehler:
MsgBox "Es gibt kein Verzeichnis mit dem Namen " & Chr(13) & Range("A1")
End Sub
'Benötig den Verweis auf >>>Microsoft Scripting Runtime 0 Then
ListFilesInFolder = FileItem.Path  '& FileItem.Name
End If
Next FileItem
If IncludeSubfolders Then
For Each SubFolder In SourceFolder.SubFolders
ListFilesInFolder SubFolder.Path, True
Next SubFolder
End If
Set FileItem = Nothing
Set SourceFolder = Nothing
Set FSO = Nothing
ActiveWorkbook.Saved = True
End Function


Anzeige
AW: Verzeichnisse vergleichen, identische auflisten
11.03.2008 13:58:00
{mskro}
Hallo Tino,
zuerst mal vielen Dank, das du dir die Zeit genommen hast, das zu erarbreiten.
Was allerdings meinst du mit "Benötigt den Verweis auf >>>Microsoft Scripting Runtime
Mit derartigem Verweis habe ich bisher noch nie gearbeitet oder abreiten müßen.
Gruß Manfred

AW: Verzeichnisse vergleichen, identische auflisten
11.03.2008 14:21:00
Tino
Hallo,
im VBA- Editor unter Extras Verweise diesen Eintrag suchen und aktivieren.
Habe jetzt noch die Abfrage auf Erstelldatum und Größe der Datei wie gewünscht erweitert.

Option Explicit
'Dateien aus Ordner Dokumentieren
Sub DateiAuflisten()
Dim MeFile As String
Dim SuchFile As String
Dim i As Long, a As Long
Dim Datum As Date, Groe As Long
Dim f As Object
Dim fs As Scripting.FileSystemObject
Set fs = New Scripting.FileSystemObject
'On Error GoTo Fehler
With Application.FileSearch
.NewSearch
.LookIn = Range("A1") & "\"
.SearchSubFolders = True
.Filename = "*.*" 'Datei Typ
.Execute
For i = 1 To .FoundFiles.Count
'    MsgBox (.FoundFiles(i))
SuchFile = Right(.FoundFiles(i), Len(.FoundFiles(i)) - InStrRev(.FoundFiles(i), "\"))
Set f = fs.GetFile(.FoundFiles(i))
Datum = Format(f.DateCreated, "dd.mm.yy") 'DateLastModified, DateCreated,  _
DateLastAccessed
Groe = f.Size
MeFile = ListFilesInFolder(Range("B1"), True, SuchFile, Datum, Groe) 'nur Dateiname  _
anzeigen
If MeFile > "" Then
a = a + 1
Cells(1 + a, 1) = SuchFile
Cells(1 + a, 2) = MeFile
Cells(1 + a, 3) = Datum
Cells(1 + a, 4) = Round(Groe / 1024, 1) & " KByte"
End If
Next i
End With
If a = 0 Then MsgBox "Es wurden keine gleichen Dateien gefunden!"
Exit Sub
Fehler:
MsgBox "Es gibt kein Verzeichnis mit dem Namen " & Chr(13) & Range("A1")
End Sub
'Benötig den Verweis auf >>>Microsoft Scripting Runtime 0 Then
Set f = FSO.GetFile(FileItem.Path)
If (Format(f.DateCreated, "dd.mm.yy") = Datum) And (f.Size = Groe) Then
ListFilesInFolder = FileItem.Path  '& FileItem.Name
End If
End If
Next FileItem
If IncludeSubfolders Then
For Each SubFolder In SourceFolder.SubFolders
ListFilesInFolder SubFolder.Path, True
Next SubFolder
End If
Set FileItem = Nothing
Set SourceFolder = Nothing
Set FSO = Nothing
ActiveWorkbook.Saved = True
End Function


Gruß
Tino

Anzeige
AW: Verzeichnisse vergleichen, identische auflisten
11.03.2008 14:42:00
Tino
Hallo,
habe es etwas Modifiziert, die zwei Ordner können jetzt über Auswahldialog ausgewählt werden.
https://www.herber.de/bbs/user/50640.xls
Gruß
Tino

AW: Verzeichnisse vergleichen, identische auflisten
11.03.2008 14:47:00
{mskro}
Hallo Tino,
das ist auch eine gute Variante, jedoch findet das Makro keine Übereinstimmungen, obwohl welche da sind.
Gruß Manfred

AW: Verzeichnisse vergleichen, identische auflisten
11.03.2008 15:16:00
Tino
Hallo,
habe auch einen Fehler gemacht.
https://www.herber.de/bbs/user/50642.xls
Sage mir noch mal, was möchtest du in A in B usw. stehen haben.
Datum der Datei.
es gibt das Erstelldatum und das Änderungsdatum welches möchtest du?
Gruß
Tino

Anzeige
AW: Verzeichnisse vergleichen, identische auflisten
11.03.2008 15:39:00
{mskro}
Hallo Tino,
in Spalte"A" soll der vollständige Path mit Dateiname stehen, von den Dateien, die im ersten Verzeichnis stehen und völlig identisch mit den im zweiten Verzeichnis sind. (Name, Datum und Uhrzeit sind gleich)
Spalte "B" kann so bleiben (Path, Dateiname aus zweitem Verzeichnis)
Spalte "C" sollte das neuere Datum und die Uhrzeit haben. (geändert am)
Spalte "D" die Dateigröße
Das Makro läuft jetzt schon fast so, wie es sein soll. Wenn allerdings bei einer Datei im zweiten Verzeichnis das Änderungsdatum gleich ist, aber die Uhrzeit später ist, wird das noch nicht als Unterschied erkannt. Diese Datei bräuchte nicht mit angezeigt zu werden.
Ich hoffe es ist zu verstehen, wie ich das meine.
Ich möchte einfach 2 Sicherungsverzeichnisse miteinander vergleichen und sehen, welche Dateien doppelt vorhanden sind. Später sollen dann die doppelten im ersten Verzeichnis gelöscht werden. Aber eben nur ältere Versionen.
Gruß Manfred

Anzeige
AW: Verzeichnisse vergleichen, identische auflisten
11.03.2008 16:07:15
Tino
Hallo,
so müsste es es richtig sein.
https://www.herber.de/bbs/user/50643.xls
nur zur Info: dies funktioniert so nicht mit Office 2007, weil diese Version nicht
Application.FileSearch unterstützt.
Gruß
Tino

AW: Verzeichnisse vergleichen, identische auflisten
12.03.2008 07:41:43
{mskro}
Hallo Tino,
das ist SUPER, vielen Dank.
Gruß Manfred

Etwas habe ich doch noch
12.03.2008 09:54:00
{mskro}
Hallo Tino,
ich stelle gerade fest, das es vielleicht sehr nützlich wäre einen Button zu haben, wo ich das durchsuchen der Unterverzeichnisse "AN" und "AUS" Schalten kann. Bei größeren Verzeichnisstrukturen dauert ein Durchlauf nämlich sehr lange.
Gruß Manfred

Anzeige
AW: Etwas habe ich doch noch
12.03.2008 10:28:00
Tino
Hallo,
verstehe ich nicht An- und AUS- schalten, meinst du etwa so wie eine Pause Taste?
Wüsste jetzt nicht ob dass überhaupt machbar ist in VBA.
Ich arbeite gerate an einen schnelleren Code, der dauert aber noch etwas.
Gruß
Tino

AW: Etwas habe ich doch noch
12.03.2008 10:42:00
{mskro}
Hallo Tino,
mit dem AN- und AUS- schalten meine ich, das mal mit Untervzeichnissen und ein anderes mal ohne Unterverzeichnisen überprüft wird. Es war damit keine Pausentaste gemeint.
CheckBox = True, dann mit Unterverzeichnissen
CheckBox = False, dann ohne Unterverzeichnisse
Ich hoffe nicht, das der Thread zu gemacht wird, bevor du den schnelleren Code fertig haben solltest. Sonst gebe ich dir auch gerne meine eMail.
Gruß Manfred

Anzeige
AW: Etwas habe ich doch noch
12.03.2008 10:49:32
Tino
Hallo,
verstehe ich nicht An- und AUS- schalten, meist du etwa so wie eine Pause Taste?
Ich arbeite gerate an einen schnelleren Code, der tauert aber noch etwas.
Gruß
Tino

AW: Etwas habe ich doch noch
12.03.2008 11:21:00
{mskro}
Hallo Tino,
gemeint ist eine CheckBox auf dem Tabellenblatt ("Tabelle1") neben dem Startbutton.
Ist die CheckBox angehakt, dann überprüft das Makro die gewählten Verzeichnisse inkl. der Unterverzeichnisse.
Ist die CheckBox nicht angehakt, dann werden nur die gewählten Verzeichnisse ohne deren Unterverzeichnisse überprüft.
Gruß Manfred

AW: Etwas habe ich doch noch
12.03.2008 12:01:00
Tino
Hallo,
so habe deine wünsche eingebaut und dieses Programm ist nun
auch um einiges schneller.
https://www.herber.de/bbs/user/50680.xls
Gruß
Tino

Anzeige
AW: Etwas habe ich doch noch
12.03.2008 12:40:00
{mskro}
Hallo Tino,
nun hast du aber die Verzeichnisangabe in Spalte "A" wieder raus genommen.
Kannst du das bitte drin lassen.
Aber sonst läuft es prima
Gruß Manfred

Tino, Du bist der Größte >DANKE<
12.03.2008 14:08:15
{mskro}
Hallo Tino,
das hätte ich niemals ohne Deine Hilfe hinbekommen.
Nochmals ein riesiges Dankeschön
Gruß Manfred

AW: Verzeichnisse vergleichen, identische auflisten
11.03.2008 14:44:00
{mskro}
Hallo Tino,
ich bin schon mal begeistert von der derzeitigen Funktion des Makros.
Das mit dem Runtime Modul habe ich nun auch gefunden.
Zum Makro:
1) Die Einträge des Datums sind allerdings nicht richtig, denn alle Einträge stehen auf dem heutigen Datum
2) Aufgelistet werden alle doppelt vorhandenen Dateien (jedoch ohne das Verzeichnis). Allerdings benötige ich der Spalte "A" nur die, deren Name, Datum und Größe ebenfalls identisch sind.
Es wäre toll, wenn du noch etwas Zeit opfern könntest.
Gruß Manfred
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige