2017-03-23 3 views
1

Ich habe eine Reihe von CSV-Dateien, die zu mir in einem Ordner einfach benannt für den Monat kommen. Ich habe Code, der arbeitet, um sie zu finden, sie zu öffnen, sie zu analysieren und ich habe Probleme, sie so zu speichern, wie ich es möchte. Ziel ist es, den gleichen Dateinamen wie im neuen und analysierten Format zu speichern.Convert von CSV in XLSX und speichern mit dem gleichen Dateinamen

Sub OpenCSVs_2() 
Dim MyFiles As String, ThisMonth As String, Convert As String 
Dim startPath As String 
ThisMonth = Format(Date, "mmmm") 
startPath = "C:\Users\ME\Desktop\CSV find convert tests\" & ThisMonth & "\" 
MyFiles = Dir(startPath & "*.csv") 
Convert = Dir(startPath & "*xlsx") 

Do While MyFiles <> "" 

Workbooks.Open startPath & MyFiles 

Call Parse1 

ActiveWorkbook.SaveAs Filename:="startPath & Convert",  FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False 

MyFiles = Dir '<----------------error happens here 

Loop 

End Sub 

die oben tut tatsächlich etwas und schafft ein xlsm Dateinamen "StartPath & Convert". Ich bin mir sicher, dass die Lösung direkt vor mir liegt.

+0

Während Darnit kein großes Schimpfwort ist, versuchen Sie bitte, beim Schreiben von Beiträgen einen professionellen Ton zu bewahren. –

Antwort

2

Wie in meinem vorherigen Beitrag, setzen Sie Ihre Variablen in Anführungszeichen, die dann in eine Zeichenfolge verwandelt. Entfernen Sie zuerst die Anführungszeichen für startPath & MyFiles und ersetzen Sie dann die Erweiterung mit der Funktion Replace. Ich habe auch das Workbook-Objekt hinzugefügt, da Sie ActiveWebbook vermeiden sollten, da es Probleme verursachen kann.

Sub OpenCSVs_2() 
Dim MyFiles As String, ThisMonth As String 
Dim startPath As String 
Dim wb As Workbook 
ThisMonth = Format(Date, "mmmm") 
startPath = "C:\Users\ME\Desktop\CSV find convert tests\" & ThisMonth & "\" 
MyFiles = Dir(startPath & "*.csv") 

Do While MyFiles <> "" 

    Set wb = Workbooks.Open(startPath & MyFiles) 

    Call Parse1 

    wb.SaveAs Filename:=startPath & Replace(MyFiles, ".csv", ".xlsx"), FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False 

    MyFiles = Dir 

Loop 

End Sub 
+0

Ah ... Ersetzen ist eine vordefinierte Funktion. Das funktioniert ... vielen Dank. –

Verwandte Themen