Hallo,
ich versuche gerade ein Makro zu ersrellen, dass beim Öffnen von Excel automatisch eine .csv-Datei imporiert. Das funktioniert soweit auch schon ganz gut, nur muss ich (aus dem Beispiel, dass ich gefunden hatte) immer den konkreten Ordnerpfad angeben. Ich hätte gerne, dass einfach die csv-Datei aus dem Ordner imporiert wird, in dem die .xlsm-Datei liegt, egal, wo dieser Ordner nun wiederum auf dem Rechner liegt. Ich bekomme das aber leider nicht hin.
Hier der bisherige Code:
ich versuche gerade ein Makro zu ersrellen, dass beim Öffnen von Excel automatisch eine .csv-Datei imporiert. Das funktioniert soweit auch schon ganz gut, nur muss ich (aus dem Beispiel, dass ich gefunden hatte) immer den konkreten Ordnerpfad angeben. Ich hätte gerne, dass einfach die csv-Datei aus dem Ordner imporiert wird, in dem die .xlsm-Datei liegt, egal, wo dieser Ordner nun wiederum auf dem Rechner liegt. Ich bekomme das aber leider nicht hin.
Hier der bisherige Code:
Quellcode
- Private Sub Workbook_Open()
- Const CSVPFAD = "C:\ais_records"
- Dim wbTarget As Workbook, wbSource As Workbook, ws As Worksheet
- Set fso = CreateObject("Scripting.Filesystemobject")
- Set wbTarget = ActiveWorkbook
- Application.DisplayAlerts = False
- 'Lösche alle Worksheets bevor wir alle neu anlegen
- If wbTarget.Worksheets.Count > 1 Then
- For i = 1 To wbTarget.Worksheets.Count - 1
- wbTarget.Worksheets(i).Delete
- Next
- End If
- For Each f In fso.GetFolder(CSVPFAD).Files
- If LCase(Right(f.Name, 3)) = "csv" Then
- Workbooks.OpenText Filename:=f.Path
- Set wbSource = ActiveWorkbook
- On Error Resume Next
- Set ws = wbTarget.Worksheets(f.Name)
- If Err <> 0 Then
- Set ws = wbTarget.Worksheets.Add
- ws.Name = f.Name
- ws.Range("A:ZZ").Clear
- End If
- wbSource.Worksheets(1).Range("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Semicolon:=True, TrailingMinusNumbers:=True
- wbSource.Worksheets(1).Range("A:ZZ").Copy Destination:=ws.Range("A1")
- wbSource.Close False
- End If
- Next
- Application.DisplayAlerts = True
- Set fso = Nothing
- End Sub