Ich muss monatlich für alle Kunden bestimme Werte aus der aktuellen Excel-Datei in die des Vormonats kopieren. Die beiden Dateien sind in unterschiedlichen Verzeichnissen gespeichert und haben unterschiedliche Namen, allerdings beginnen beide jeweils mit der Kundennummer, worüber ich sie identifizieren kann.
Konkret öffne ich die Datei "4444-aktuell" im Verzeichnis "Dezember", suche die Datei "4444-Vormonat" im Verzeichnis "November", kopiere die Werte aus der Datei "4444-aktuell" und füge sie in der Datei "4444-Vormonat" ein, speichere resp. schliesse dann beide. So wird jede Datei, welche im Verzeichnis "Dezember" steht abgearbeitet.
Für das Kopieren und Einfügen habe ich mit dem Rekorder ein Makro aufgezeichnet, welches bestens funktioniert, wenn ich jeweils die beiden zusammengehörenden Dateien selber öffne.
Nun möchte ich das Makro so ergänzen, dass es selbständig die erste Datei im Verzeichnis "Dezember" öffnet, die dazu gehörende Datei im Verzeichnis "November" sucht und öffnet, die Kopierarbeit erledigt, die Dateien schliesst und dann die nächste Datei aus dem Verzeichnis "Dezember" genau gleich abarbeitet.
Zum Testen habe ich den Teil der Kopierarbeit mal weggelassen. Der nachfolgende Code funktioniert bis zum Öffnen der QuellDatei. Allerdings wird nicht die "oberste" Datei im Verzeichnis geöffnet, sondern irgendeine...aber ich glaube nicht, dass dies entscheidend ist, oder?
Bei der Zeile 'ZielDatei suchen' steht das Makro zwar im richtigen Verzeichnis, aber im Debugger wird eine andere Datei in strZiel angezeigt, die eben nicht mit der QuellDatei übereinstimmt. Somit springt das Makro auf die Else-Zeile.
Hier ist mein Code:
Sub Test_Oeffnen()
Dim Ziel As Workbook
Dim Quelle As Workbook
Dim zs As Object
Dim zVerz As Object
Dim zDatei As Object
Dim zDateien As Object
Dim qs As Object
Dim qVerz As Object
Dim qDatei As Object
Dim qDateien As Object
Dim strZiel As String
Set zs = CreateObject("Scripting.FileSystemObject")
Set zVerz = zs.GetFolder("F:\November\")
Set zDateien = zVerz.Files
Set qs = CreateObject("Scripting.FileSystemObject")
Set qVerz = qs.GetFolder("F:\Dezember\")
Set qDateien = qVerz.Files
For Each qDatei In qDateien
'QuellDatei öffnen
Application.DisplayAlerts = False
Set Quelle = Workbooks.Open(qDatei)
Application.DisplayAlerts = True
'ZielDatei suchen
strZiel = Dir("F:\November\*.xl*")
If strZiel Like (qDatei) Then
'ZielDatei öffnen
Application.DisplayAlerts = False
Set Ziel = Workbooks.Open(strZiel)
Application.DisplayAlerts = True
Else
'Fehlermeldung
MsgBox "die Datei ist nicht vorhanden!"
End If
'Kopierarbeit
Next qDatei
End Sub
Kann mir jemand helfen, wie ich die richtige ZielDatei finden und öffnen kann? Bin für jede Hilfe dankbar!
Grüsse
coko