Excel VBA - CSV to Excel mit einer Schleife

jerry0110

Erfahrenes Mitglied
Hi,

ich habe eine Excel Datei angelegt mit mehreren Inhalten (Pfad der Datei, monatlich oder wöchentliche Auswertung, Emailadresse, etc). Jetzt möchte ich mit einer Schleife dieses Sheet auslesen und den Inhalt verarbeiten.

Jetzt habe ich folgendes gebastelt, was aber nicht durchläuft. Was mach ich falsch? bzw. wo ist der Denkfehler?

Visual Basic:
Sub CSV_erstellen()


Dim source As Worksheet
Dim LastRowNrSource As Long
Dim f As Integer

Set source = ThisWorkbook.Worksheets("Tabelle1")

'letzte Ziele im Ziel berechnen
LastRowNrSource = lastRowNr(source)
 
  For f = lastRowNr(source) To 1 Step -1
 
  Dim sFile As String, sPath As String, iFree As Integer
  Dim arrCSV, arrTmp, arrXLS(), i As Long, j As Integer, n As Long
  Dim zFile As String
  Dim myDate As Date
 
  sPath = source.Range("B2") & source.Range("G" & LastRowNrSource)  'anpassen
  sFile = Dir(sPath & "*.csv")
  zFile = "Report"
  Application.ScreenUpdating = False
 
  Do While Len(sFile)
 
  iFree = FreeFile
  Open sPath & sFile For Input As iFree
  arrCSV = Split(Input(LOF(iFree), iFree), vbCrLf)
  Close iFree
 
  For i = 0 To UBound(arrCSV)
  arrTmp = Split(arrCSV(i), ";")
  n = Application.Max(n, UBound(arrTmp))
  Next
 
  ReDim arrXLS(1 To UBound(arrCSV) + 1, 1 To n + 1)
  For i = 0 To UBound(arrCSV)
  arrTmp = Split(arrCSV(i), ";")
  For j = 0 To UBound(arrTmp)
  arrXLS(i + 1, j + 1) = arrTmp(j)
  Next
  Next
 
  With Workbooks.Add
  .Sheets(1).Cells(1, 1).Resize(UBound(arrXLS), UBound(arrXLS, 2)) = arrXLS
  .SaveAs sPath & Mid(zFile, 1, Len(sFile) - 4)
  .Close
  End With
 
  sFile = Dir
  Loop

LastRowNrSource = LastRowNrSource + 1
 
Next f

 
  End Sub


Bei sPath ist source.Range("B2") der Hauptpfad der Datei und source.Range("G" & LastRowNrSource) ist der jeweilige des einzelnen Kunden

Visual Basic:
 sPath = source.Range("B2") & source.Range("G" & LastRowNrSource)
 
Zuletzt bearbeitet:

jerry0110

Erfahrenes Mitglied
Ok hab den Fehler gefunden. Habe mit MsgBox einfach mal alle wichtigen Variablen anzeigen lassen. Und da hab ich gemerkt, dass der zweite Teil des Pfads leer war. Jetzt hab ich den Code geändert in:

Visual Basic:
 sPath = source.Range("B2") & source.Range("G" & f)

Und es klappt jetzt. :)