ich hätte da eine Problem, bei dem ich in den Weiten des Internets noch nicht die richtige Lösung gefunden habe.
Ausgangssituation: Ich schreibe jeden Morgen an 5 unterschiedliche Spediteure separate Anmeldungen. Diese werden in separaten Ordnern gespeichert.
Nun möchte ich gerne ein Dashboard erstellen, was die unterschiedlichen Daten der Anmeldungen eines ausgewählten Tag hoch lädt. wenn die Daten in diese Masterdatei hochgeladen sind, kann ich diese Daten entsprechend verarbeiten und aufbereiten.
ich habe leider ein Problem mit dem Importieren der Daten, durch das variable Datum.
der optimale Prozess sollte wie folgt aussehen:
1. Auswahl eines Datums (Feld ist bereits vorgegeben)
2. Button auswählen, der Makro startet
3. Daten werden aus jedem der 5 Anmelde-Dateien in die Masterdatei importiert in das jeweilige Sheet des Carriers (sind ebenfalls angelegt)
4. Bildschirmupdate = false
Folgenden Code habe ich gefunden und versucht entsprechen anzupassen. allerdings scheitere ich schon daran, die richtige Datei anzusprechen.
Dazu habe ich ein "Set up" Sheet angelegt, in dem die Pfade und Dateinamen anhand des ausgewählten Datums angezeigt werden. Die Zellen, in dem der LInk angezeigt wird, wollte ich entsprechen im Code nutzen.
So zum Beispiel:
Europa
Pfad W:\Germany\CDC\Transport Planning\01 Outbound Scheduling\04 Avise\04 Europa
Datei PREADVISE_Europa_2019-04-29
Link W:\Germany\CDC\Transport Planning\01 Outbound Scheduling\04 Avise\04 Europa\PREADVISE_Europa_2019-04-29.xlsm
Wie gesagt, ändert sich der Datei-Name mit der Auswahl des Datums.
Wie muss der Code entsprechend aussehen, dass er 5x eine unterschiedliche Range ansteuert und in 5 unterschiedliche Sheets importiert?
Folgenden Code habe ich als Basis gefunden (nicht selbst geschrieben, diese Lorbeeren würde ich mir nie einheimsen)
Public Sub Ein_Blatt_kopieren()
Dim WkBk_Quelle As Workbook ' das Herkunfts-Workbook - die Quelle
Dim WSh_Quelle As Worksheet ' das Herkunfts-Tabellenblatt
Dim rBlock_Q As Range ' der zu kopierende Block
Dim WkBk_Ziel As Workbook ' das Empfangs-Workbook - das Ziel
Dim WSh_Ziel As Worksheet ' das Empfangs-Tabellenblatt
Dim lZeile_Z As Long ' die jeweilige Start-Zeile im Ziel-Blatt
Set WkBk_Ziel = ActiveWorkbook ' diese Datei ist das Ziel !!!
Set WSh_Ziel = WkBk_Ziel.Worksheets("Avis Dachser GRP") ' das Tabellenblatt ggf. anpassen !!! _
_
_
lZeile_Z = 1 ' die erste zu beschreibende Zeile
Application.ScreenUpdating = False ' den Bildschirm-Update unterdrücken
Set WkBk_Quelle = Workbooks.Open(Filename:= _
"C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Excel-Dateien\" & _
"Arbeitsdaten.xls", ReadOnly:=True) ' die Herkunfts-Datei - die Quelle - öffnen
Set WSh_Quelle = WkBk_Quelle.Worksheets("Advise") ' das Tabellenblatt benennen
With WSh_Quelle ' mit dem jeweiligen Tabellenblatt arbeiten
Set rBlock_Q = .Range(.Cells(1, 1), .Cells.SpecialCells(xlLastCell))
rBlock_Q.Copy
WSh_Ziel.Cells(lZeile_Z, 1).PasteSpecial Paste:=xlFormats
WSh_Ziel.Cells(lZeile_Z, 1).PasteSpecial Paste:=xlValues
lZeile_Z = lZeile_Z + rBlock_Q.Rows.Count
End With
Application.CutCopyMode = False
WkBk_Quelle.Close savechanges:=False
Application.ScreenUpdating = True ' den Bildschirm-Update wieder zulassen
End Sub
Wenn Ihr mir hier helfen könnten wäre das spitze und ich komme meinem Ziel einen erheblichen Schritt näher.Danke für Eure Zeit im Voraus
Gruß
Nico