tofe92
Goto Top

Importpfad aus Excel spalte auslesen und alle dateien im Ordner untereinander öffnen

Hallo zusammen, ich habe lange gesucht und auch hier im forum fast die perfekte antwort gefunden. Jetzt möchte ich den cod so anpassen das ich keinen fixen Pfad habe sondern das immer der Pfad aus dem Shet "Stahlmassen" F1 benutzt wird.

Hier mal der Code:

Sub ImportiereCSVDateien()
    Const CSVPFAD = "C:\test"  
    Dim wbTarget As Workbook, wbSource As Workbook, ws As Worksheet, ts As Worksheet
    Set fso = CreateObject("Scripting.Filesystemobject")  
    Set wbTarget = ActiveWorkbook
    Application.DisplayAlerts = False
    
    'Legt das CSV-Trennzeichen für die Dateien fest  
    strCSVDelimiter = ";"  
    
    Set fso = CreateObject("Scripting.Filesystemobject")  
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    
    'Zielarbeitsblatt für die importierten Daten  
    Set wsTarget = Worksheets(1)
    wsTarget.Name = "Zusammenfassung"  
    'temporäres Arbeitsblatt für den Import der Daten erstellen  
    Set wsTemp = Worksheets.Add(After:=Worksheets(Worksheets.Count))
    
    'Inhalt des Zusammenfassungsblattes löschen  
    wsTarget.UsedRange.Clear
    
    'Startausgabezelle festlegen  
    Set curCell = wsTarget.Range("A1")  
    For Each f In fso.GetFolder(CSVPFAD).Files
        If LCase(fso.GetExtensionName(f.Name)) = "abs" Then  
            'Temporäres Sheet löschen  
            wsTemp.UsedRange.Clear
            'CSV-Daten in Temporäres Sheet importieren  
            With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & f.Path, Destination:=wsTemp.Range("$A$1"))  
                .Name = "import"  
                .FieldNames = True
                .AdjustColumnWidth = True
                .RefreshPeriod = 0
                .TextFilePlatform = xlWindows
                .TextFileStartRow = 1
                .TextFileParseType = xlDelimited
                .TextFileTextQualifier = xlTextQualifierDoubleQuote
                .TextFileOtherDelimiter = strCSVDelimiter
                .Refresh BackgroundQuery:=False
                .Delete
            End With
            
            With wsTemp
                'Daten in Zielsheet kopieren  
                .UsedRange.Copy curCell
            End With
            'Ausgabezeile eins nach unten schieben  
            Set curCell = wsTarget.Cells(wsTarget.UsedRange.Rows.Count + 1, 1)
        End If
    Next
    'Temporäres Sheet löschen  
    wsTemp.Delete
    'Spalten anpassen  
    wsTarget.Columns.AutoFit
    
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    MsgBox "Vorgang beendet!", vbInformation  
    Set fso = Nothing
End Sub

Kurz zur erklärung falls jemand auch ein einfacheres skript hat. Das Makro soll alle Dateien mit der endung .abs eines ordners untereinander in Tabelle 1 A1einfügen.

Vielen Dank vorab für eure Hilfe.

Content-Key: 1697081908

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

Printed on: April 23, 2024 at 10:04 o'clock

Mitglied: 149569
Solution 149569 Jan 06, 2022 updated at 21:38:26 (UTC)
Goto Top
das ich keinen fixen Pfad habe sondern das immer der Pfad aus dem Shet "Stahlmassen" F1 benutzt wird.
Zeile 2 ändern in
Dim CSVPFAD as String
CSVPFAD = Sheets("Stahlmassen").Range("F1").Value  
sollte reichen.
Member: Tofe92
Tofe92 Jan 06, 2022 at 22:26:55 (UTC)
Goto Top
Super, danke für die schnelle Antwort. Funktioniert 1A