booster07
Goto Top

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
beispiel

Content-ID: 330447

Url: https://administrator.de/contentid/330447

Ausgedruckt am: 25.11.2024 um 13:11 Uhr

132272
132272 24.02.2017 um 13:12:49 Uhr
Goto Top
Booster07
Booster07 24.02.2017 um 13:37:25 Uhr
Goto Top
Hallo,

danke für Deine Hilfe.

Bei diesem Skript wird aber nach einer bestimmten Nummer in den Excel-Dateien gesucht. Nur wenn diese Nummer in der Datei enthalten ist, soll ausschließlich die Zeile in der diese Nummer enthalten ist, importiert werden.

Außerdem müssen alle Links zu den Dateien einzeln in das VBA-Skript eingetragen werden. Ich benötige ein VBA-Skript, welches die drei Dateinamen aus drei Zellen der Excel-Datei automatisch ausliest.

Sorry, ich bekomme es leider selbst nicht hin.

Viele Grüße
132272
Lösung 132272 24.02.2017 aktualisiert um 14:41:35 Uhr
Goto Top
Zitat von @Booster07:
Sorry, ich bekomme es leider selbst nicht hin.
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 face-sad
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
und tschüss...
Booster07
Booster07 24.02.2017 um 15:28:08 Uhr
Goto Top
Ok ich weiß jetzt Bescheid.
Danke.