VBA: Dateiinhalte in Abhängigkeit des Dateinamens importieren
Hallo,
ich habe sehr viele Wertedateien (xlsx), die ich in einer Auswertungsdatei (xlsm) auswerten möchte. Die Wertedateien sind stets gleich aufgebaut und bestehen aus 2 Spalten (und ca. 6000 Zeilen). Sie sind im gleichen Ordner abgelegt (z.B. C:\Test).
Durch ein VBA Skript sollen jeweils drei der Wertedateien, wie im Screenshot abgebildet, in eine Auswertungsdatei importiert werden. In Auswertungsdatei A werden die Wertedateien A.1, A.2 und A.3 ausgewertet, in Auswertungsdatei B entsprechend die Wertedateien B.1, B.2 und B.3 usw.
Die Inhalte der Wertedatei A.1 sollen in die Spalten A und B, Wertedatei A.2 in die Spalte C und D und Wertedatei A.3 in die Spalten E und F eingefügt werden. Die Inhalte sollen erst ab Zeile 3 eingefügt werden. Die Spalten ab G sollen unverändert bleiben, da diese andere Inhalte enthalten.
In drei Zellen der Auswertungsdatei könnte man zum Beispiel die Dateinamen der zu importierenden Wertedateien schreiben, um festzulegen welche Wertedateien importiert werden sollen... Dürften diese Dateinamen auch mit einer Formel aus einem anderen Arbeitsblatt ermittelt werden (z.B. sverweis)?
Ich hoffe, dass mir jemand weiterhelfen könnte und würde mich sehr darüber freuen.
Viele Grüße
Booster
ich habe sehr viele Wertedateien (xlsx), die ich in einer Auswertungsdatei (xlsm) auswerten möchte. Die Wertedateien sind stets gleich aufgebaut und bestehen aus 2 Spalten (und ca. 6000 Zeilen). Sie sind im gleichen Ordner abgelegt (z.B. C:\Test).
Durch ein VBA Skript sollen jeweils drei der Wertedateien, wie im Screenshot abgebildet, in eine Auswertungsdatei importiert werden. In Auswertungsdatei A werden die Wertedateien A.1, A.2 und A.3 ausgewertet, in Auswertungsdatei B entsprechend die Wertedateien B.1, B.2 und B.3 usw.
Die Inhalte der Wertedatei A.1 sollen in die Spalten A und B, Wertedatei A.2 in die Spalte C und D und Wertedatei A.3 in die Spalten E und F eingefügt werden. Die Inhalte sollen erst ab Zeile 3 eingefügt werden. Die Spalten ab G sollen unverändert bleiben, da diese andere Inhalte enthalten.
In drei Zellen der Auswertungsdatei könnte man zum Beispiel die Dateinamen der zu importierenden Wertedateien schreiben, um festzulegen welche Wertedateien importiert werden sollen... Dürften diese Dateinamen auch mit einer Formel aus einem anderen Arbeitsblatt ermittelt werden (z.B. sverweis)?
Ich hoffe, dass mir jemand weiterhelfen könnte und würde mich sehr darüber freuen.
Viele Grüße
Booster
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 330447
Url: https://administrator.de/contentid/330447
Ausgedruckt am: 25.11.2024 um 13:11 Uhr
4 Kommentare
Neuester Kommentar
Find ich aber auch sehr verdächtig das du hier immer ohne irgendwelche Versuche herkommst und dir was zusammenstellen lässt. Warum beschäftigst du dich nicht mal eingängig damit? Das wäre meine erste Intention wenn ich viel mit VBA vorhätte.
Und mit obigem Code hättest du zumindest das Grundgerüst gehabt und damit arbeiten können
Würde mich persönlich tierisch nerven immer fragen zu müssen.
Naja, einmal Copy n' Paster immer ....
und tschüss...
Und mit obigem Code hättest du zumindest das Grundgerüst gehabt und damit arbeiten können
Würde mich persönlich tierisch nerven immer fragen zu müssen.
Naja, einmal Copy n' Paster immer ....
Sub DoYourFuckingHomework()
Dim ws As Worksheet, wsTarget As Worksheet, file As String, rngNext As Range, strFile1 As String, strFile2 As String, strFile3 As String
' Dateiname Datei 1 aus A1
strFile1 = Range("A1").Value
' Dateiname Datei 2 aus A2
strFile2 = Range("A2").Value
' Dateiname Datei 3 aus A3
strFile3 = Range("A3").Value
'Sheet festlegen in das die Daten kopiert werden
Set wsTarget = Sheets(1)
'Screenflicker unterdrücken
Application.ScreenUpdating = False
Application.DisplayAlerts = False
' Ausgabe ab A5
Set rngNext = wsTarget.Range("A5")
For Each file In Array(strFile1, strFile2, strFile3)
'Mappe öffnen
With GetObject(file).Sheets(1)
'belegte Daten in Spalten A:B aus dem Sheet kopieren
.Range("A1:B" & .Cells(Rows.Count,"A").End(xlUp).Row).Copy rngNext
' schließe die Mappe
.Parent.Close False
End With
'Nächste Einfügespalte festlegen
Set rngNext = rngNext.Offset(0, 2)
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub