Live-Forum - Die aktuellen Beiträge
Datum
Titel
23.04.2024 14:59:21
23.04.2024 14:47:39
23.04.2024 14:23:45
Anzeige
Archiv - Navigation
1828to1832
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
Inhaltsverzeichnis

Variabler Dateipfad Datei öffnen

Variabler Dateipfad Datei öffnen
29.04.2021 10:52:51
Marco
Hallo zusammen
Ich möchte diverse Quelldateien öffnen (diese haben immer den Selben Namen) und die Daten in die Zieldatei einfügen. Das Problem ist der Pfad ist variabel mit Ordnern die nach Datum benennt sind. Wie kann ich diese Variabel in einbinden.
Ich habe in der Tabelle1 die Ordner Namen (Datum) die geöffnet werden sollen erfasst.
Der Ordner soll geöffnet werden die angegebenen Dateien die sich darin befinden nacheinander öffnen und die Daten in die Zieldatei im entsprechenden Tabellenblatt unten eingefügt werden, die Quelldatei soll dann wieder geschlossen werden. Nun in der ZielDatei in allen Tabellen die Duplikate entfernen, dann den nächsten Ordner mit dem nächsten Datum ansprechen und die entsprechenden Dateien öffnen und einfügen, usw. bis zum Ende der angegebenen Ordner von Tabelle1.
Wie muss ich dies machen, kann mir da jemand helfen?
Gruss Marco
https://www.herber.de/bbs/user/145852.xlsm

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variabler Dateipfad Datei öffnen
29.04.2021 11:10:28
Rudi
Hallo,
als Muster:

Sub Daten_aktualisieren()
Dim rng As Range, wkb As Workbook
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'Set ZielD = ActiveWorkbook
With Sheets("Tabelle1")
For Each rng In .Range(.Cells(1, 1), .Cells(Rows.Count, 1).End(xlUp))
Set wkb = Workbooks.Open("E:\Data\" & rng & "\Daten\bw_abg.csv", Local:=True)
With wkb.Sheets(1)
.Range(.Cells(1, 1), .Cells(Rows.Count, 7).End(xlUp)).Copy _
ThisWorkbook.Sheets("bw_abg").Cells(Rows.Count, 1).End(xlUp).Offset(1)
End With
wkb.Close False
Next rng
End With
Gruß
Rudi
Anzeige
AW: Variabler Dateipfad Datei öffnen
29.04.2021 13:18:19
Marco
Hallo Rudi
Danke für deine Hilfe. Der Code Funktioniert eigentlich ganz gut. Aber am Ende wenn kein weiterer Ordner mehr angegeben ist kommt eine Meldung das er den Pfad nicht finden kann. Logisch es ist ja auch kein Ordner mehr angegeben. Wie muss ich dies anpassen, damit diese Meldung nicht kommt und es einfach fertig ist?
Gruss Marco
AW: Variabler Dateipfad Datei öffnen
29.04.2021 13:35:10
Rudi
verstehe ich nicht.
Der Code arbeitet alle gefüllten Zellen in A ab.
Gruß
Rudi
AW: Variabler Dateipfad Datei öffnen
29.04.2021 13:44:55
Marco
ja das tut es. Aber wenn alle abgearbeitet sind kommt die Meldung.
Laufzeitfehler 1004 Pfad nicht gefunden. Im Pfad fehlt dann der Teil mit dem Variablen Ordner. Ich kann dann das Makro beenden oder Debuggen. Beim Debuggen wird dann der Teil "Set wkb = Workbooks.Open("Pfad")" gelb eingefärbt.
Gruss Marco
Anzeige
AW: Variabler Dateipfad Datei öffnen
29.04.2021 23:47:25
Yal
Hallo Marco,
wenn deine Liste in Spalte A tatsächlich ohne Leerzellen dazwischen ist, und die Verzeichnisse alle existieren (auch am Wochenende?), sollte es eigentlich funktionieren.
Mögliche Lösung: Fehler-tolerant handeln:

Sub Daten_aktualisieren()
Dim rng As Range
Dim wkb As Workbook
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'Set ZielD = ActiveWorkbook
On Error Resume Next
With Sheets("Tabelle1")
For Each rng In .Range(.Cells(1, 1), .Cells(Rows.Count, 1).End(xlUp))
Set wkb = Workbooks.Open("E:\Data\" & rng & "\Daten\bw_abg.csv", Local:=True)
If Not wkb Is Nothing Then
With wkb.Sheets(1)
.Range(.Cells(1, 1), .Cells(Rows.Count, 7).End(xlUp)).Copy _
ThisWorkbook.Sheets("bw_abg").Cells(Rows.Count, 1).End(xlUp).Offset(1)
End With
wkb.Close False
Set wkb = Nothing
Else
Debug.Print "Problem mit " & rng.Value
End If
Next rng
End With
End Sub
On Error Resume Next führt dazu, dass bei einer Fehlerverursachende Anweisung einfach auf die nächste Anweisung gesprungen wird.
Also wenn Workbooks.open fehlschlägt, ist wkb weiterhin Nothing, die Behandlung wird nicht gemacht und es gibt nur die Ausgabe in der Direktfenster des VB-Editors, welche Wert das Pb verursacht hat. Die For-Schleife nimmt den nächsten Eintrag.
VG
Yal
Anzeige
AW: Variabler Dateipfad Datei öffnen
30.04.2021 14:10:17
Marco
Hallo Yal
Danke dir für die Hilfe, funktioniert jetzt super.
Gruss Marco
AW: Variabler Dateipfad Datei öffnen
29.04.2021 11:54:15
MCO
Hallo Marco!
Ich hab jetzt mal angenommen, dass die Ordner nur so heißen, wie die Zellinhalte in spalte "A". Ausserdem hab ich angenommen, dass die Dateien alle so benannt sind wie die Sheets in der Originaldatei und das auch die Sheets in der Ursprungsdatei so heißen. Dennoch vermute ich, dass es da noch was anzupassen gilt.
Versuch mal, damit zurechtzukommen:

Sub Daten_aktualisieren()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim ZielID As Workbook
Dim Ursprung As Workbook
Dim Pfad_var As String
Dim Pfad As String
Set ZielD = ActiveWorkbook
Pfad_var = "\\CHZHSDAP10.aryzta.com\LogoMate\Daten\"
For Each cl In Range("A:A").SpecialCells(xlCellTypeConstants) 'Ordnernamen durchgehen
Pfad = Pfad_var & "\" & cl.Value 'kompl. Pfad bestimmen
Dim Fso As Object
Dim SearchFolder As Object
Dim FD As Object, FI As Object
Dim EachFil As Object
Set Fso = CreateObject("Scripting.Filesystemobject")
Set SearchFolder = Fso.GetFolder(Pfad)
Set EachFil = SearchFolder.Files            ' Dateien im jeweiligen Ordner
For Each FI In EachFil '   Dateien auslesen
Set Ursprung = Workbooks.Open(FI, Local:=True)
Ziel_sheet_name = Split(FI.Name, ".")(0)
lz = ZielD.Worksheets(Ziel_sheet_name).Cells(Rows.Count, 2).End(xlUp).Row + 1 'nächste freie Zeile
With Ursprung.Sheets(Ziel_sheet_name)
.Range(.Cells(1, 1), .Cells(Rows.Count, 11).End(xlUp)).Copy ZielD.Worksheets(Ziel_sheet_name).Cells(lz, 2)
End With
Ursprung.Close 0 'Schließen ohne speichern
Next FI
Next
Application.DisplayAlerts = True 'WICHTIG! Wieder einschalten!
End Sub
Gruß, MCO
Anzeige
AW: Variabler Dateipfad Datei öffnen
29.04.2021 13:03:13
Marco
Hallo MCO
Danke für die Hilfe. Ja die QuellDateien und das Sheet in dieser heissen wie das ZielSheet in der ZielDatei. Das hast du gut angenommen:-)
Ich denke bei dem Dateipfad haut es nicht ganz hin.
Die Variablen Ordnernamen stehen in der Tabelle1 in Spalte A. Wird bei deinem Code auf diese zugegriffen?
Aktuell wird keine Datei geöffnet. Daher denke ich ist der Pfad nicht korrekt. Wie kann ich dies ändern?
https://www.herber.de/bbs/user/145856.xlsm
Gruss Marco
AW: Variabler Dateipfad Datei öffnen
03.05.2021 07:18:25
MCO
Hallo Marco!
Nimm mal den Slash hier raus:

Pfad = Pfad_var & "\" & cl.Value 'kompl. Pfad bestimmen
muss heißen

Pfad = Pfad_var & cl.Value 'kompl. Pfad bestimmen
Ansonsten ist der doppelt vorhanden...
Alternativ kannst den den auch bei Pfad_var rausnehmen....
du kannst dir noch eine Selbstprüfung einbauen um den pfad zu prüfen:

If Dir(Pfad) = "" Then  msgbox "der Pfad " & Pfad " ist nicht vorhanden"
Viel Erfolg!
Gruß, MCO
Anzeige
AW: Variabler Dateipfad Datei öffnen
30.04.2021 14:11:59
Marco
Hallo zusammen
Danke euch für die Hilfe. Es klappt soweit.
Gruss Marco
AW: Variabler Dateipfad Datei öffnen
04.05.2021 14:08:52
Marco
Hallo zusammen
Doch noch eine weitere Frage.
Wie kann ich die Daten die ich aus der Quelldatei Kopiert habe in der Ziel Datei in eine Dynamische Tabelle (ListObjects) einfügen?
Ich muss anschliessend aus all diesen Tabellen (ListObjects) ein Pivot machen und ich kann soweit ich Informiert bin die Daten nur so im Pivot miteinander verknüpfen.
Kann mir da nochmals jemand helfen?
Gruss Marco

157 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige