ich habe ein "Import" Dateiliste erstellt, mit der ich aus einem Ordner aus bis zu 400 einzelne Excel Dateien diverse Daten importiere (zur Auftrags-Analyse).
Das Importieren neuer Dateien funktioniert sehr gut.
Jetzt kommt der nächste Schritt -> geänderte Dateien, d.h. der Dateiname ist derselbe wie vorher, aber innerhalb der Datei in den Feldern gab es Änderungen.
Mittlerweile bin ich soweit, dass ich in der "Import" Dateiliste auch das Änderungsdatum der Dateien ablegen kann (Funktion über allg. Modul)
Das ist mein bisheriger Code zum importieren:
Sub importmodul()
Dim sFile As String, wkb As Workbook, aeRow As Long, lRow As Long, sortLAST As Long, wksDATA _
As Worksheet, aender As Date
Application.ScreenUpdating = False 'Flackern aus
Const sPfad As String = "mein Pfad" 'anpassen
Set wksDATA = ActiveWorkbook.Sheets("DATA") 'anpassen
sFile = Dir(sPfad & "*.xls*")
aeRow = 5
Do While sFile ""
aender = Aenderungsdatum(sPfad & sFile)
oldaender = wksDATA.Range("data_aenderung").Cells(aeRow)
MsgBox (oldaender & " " & aender)
If WorksheetFunction.CountIf(wksDATA.Columns(1), sFile) = 0 Then
'Datei wurde noch nicht importiert
With wksDATA
lRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(lRow, 1) = sFile 'Datei merken
.Hyperlinks.Add .Cells(lRow, 1), sPfad & sFile
.Hyperlinks.Add .Cells(lRow, 2), Cells(lRow, 2), TextToDisplay:="select"
.Range("data_aenderung").Cells(lRow) = Aenderungsdatum(sPfad & sFile)
End With
Set wkb = Workbooks.Open(sPfad & sFile)
With wkb.Sheets(1)
'MsgBox (lRow)
'Daten aus Auftrag Blatt 1 übertragen
wksDATA.Range("data_datum").Cells(lRow) = .Range("datumheute") 'Datum
wksDATA.Range("data_werbeform").Cells(lRow) = .Range("Zwerbeform") 'Werbeform
wksDATA.Range("data_kunde").Cells(lRow) = .Range("kunde") 'Kunde
wksDATA.Range("data_titel").Cells(lRow) = .Range("titel") 'Titel
wksDATA.Range("data_auftragsnummer").Cells(lRow) = .Range("auftragsnummer") ' _
Auftragsnummer
wksDATA.Range("data_berater").Cells(lRow) = .Range("berater") 'Mediaberater
wksDATA.Range("data_basis").Cells(lRow) = .Range("Zbasisprodkosten") 'Basis _
Budget
wksDATA.Range("data_vkonair").Cells(lRow) = .Range("Zformelsummeonair") 'VK On _
Air
wksDATA.Range("data_vkonline").Cells(lRow) = .Range("Zformelsummeonline") 'VK _
Online
wksDATA.Range("data_mediawert").Cells(lRow) = .Range("Zformelsummemedia") ' _
Media Budget
wksDATA.Range("data_motive").Cells(lRow) = WorksheetFunction.Sum(.Range(" _
zmotive").Value) 'Motive
wksDATA.Range("data_wm1").Cells(lRow) = .Range("onairauswahl1") 'Werbemittel 1
wksDATA.Range("data_wm2").Cells(lRow) = .Range("onairauswahl2") 'Werbemittel 2
wksDATA.Range("data_wm3").Cells(lRow) = .Range("onairauswahl3") 'Werbemittel 3
wksDATA.Range("data_wm4").Cells(lRow) = .Range("onairauswahl4") 'Werbemittel 4
wksDATA.Range("data_wm5").Cells(lRow) = .Range("onairauswahl5") 'Werbemittel 5
wksDATA.Range("data_wm6").Cells(lRow) = .Range("onairauswahl6") 'Werbemittel 6
wksDATA.Range("data_wm7").Cells(lRow) = .Range("onairauswahl7") 'Werbemittel 7
wksDATA.Range("data_wm8").Cells(lRow) = .Range("onairauswahl8") 'Werbemittel 8
wksDATA.Range("data_gebiet1").Cells(lRow) = .Range("gebiet1") 'Gebiet 1
wksDATA.Range("data_gebiet2").Cells(lRow) = .Range("gebiet2") 'Gebiet 2
wksDATA.Range("data_gebiet3").Cells(lRow) = .Range("gebiet3") 'Gebiet 3
wksDATA.Range("data_gebiet4").Cells(lRow) = .Range("gebiet4") 'Gebiet 4
wksDATA.Range("data_gebiet5").Cells(lRow) = .Range("gebiet5") 'Gebiet 5
wksDATA.Range("data_gebiet6").Cells(lRow) = .Range("gebiet6") 'Gebiet 6
wksDATA.Range("data_gebiet7").Cells(lRow) = .Range("gebiet7") 'Gebiet 7
wksDATA.Range("data_gebiet8").Cells(lRow) = .Range("gebiet8") 'Gebiet 8
wksDATA.Range("data_ow1").Cells(lRow) = .Range("onlineauswahl1") ' Online _
Werbemittel 1
wksDATA.Range("data_ow2").Cells(lRow) = .Range("onlineauswahl2") ' Online _
Werbemittel 2
wksDATA.Range("data_ow3").Cells(lRow) = .Range("onlineauswahl3") ' Online _
Werbemittel 3
wksDATA.Range("data_ow4").Cells(lRow) = .Range("onlineauswahl4") ' Online _
Werbemittel 4
wksDATA.Range("data_ow5").Cells(lRow) = .Range("onlineauswahl5") ' Online _
Werbemittel 5
wksDATA.Range("data_ow6").Cells(lRow) = .Range("onlineauswahl6") ' Online _
Werbemittel 6
wksDATA.Range("data_ow7").Cells(lRow) = .Range("onlineauswahl7") ' Online _
Werbemittel 7
wksDATA.Range("data_hp1").Cells(lRow) = .Range("homepage1") ' Homepage 1
wksDATA.Range("data_hp2").Cells(lRow) = .Range("homepage2") ' Homepage 2
wksDATA.Range("data_hp3").Cells(lRow) = .Range("homepage3") ' Homepage 3
wksDATA.Range("data_hp4").Cells(lRow) = .Range("homepage4") ' Homepage 4
wksDATA.Range("data_hp5").Cells(lRow) = .Range("homepage5") ' Homepage 5
wksDATA.Range("data_hp6").Cells(lRow) = .Range("homepage6") ' Homepage 6
wksDATA.Range("data_hp7").Cells(lRow) = .Range("homepage7") ' Homepage 7
End With
wkb.Close False
End If
sFile = Dir
aeRow = aeRow + 1
Loop
'sortLAST = wksDATA.Cells(Rows.Count, 2).End(xlUp).Row
'wksDATA.Range("A5:AR" & sortLAST).Sort _
'Key1:=Range("C5"), _
'Order1:=xlDescending
Application.ScreenUpdating = True
End Sub
Meine Fragen:
Wie gehe ich am besten vor um geänderte Dateien zu importieren? Dabei müsste die "alte Datei" in der Liste ja ersetzt werden...
Mein bisheriger Ansatz lief über das (im Code auskommentierte) Sortieren nach dem Änderungsdatum, um dann beim Import auch dann Dateien zu importieren, wenn das bisherige Änderungsdatum sich vom Änderungsdatum im Explorer unterscheidet. Da bei Workbooks.Open aber anscheinend immer nach Name sortiert die Dateien geöffnet werden, klappte das nicht...
Villeicht gibt es ja auch einen ganz anderen Ansatz um eine solche Liste mit Änderungen an Dateien zu behandeln.
Freue mich auf Vorschläge udn Hilfe,
Vielen Dank und beste Grüße,
Stefan