Hallo zusammen,
zur Zeit baue ich mir ein Makro, welches mehrere CSV-Dateien in einem Ordner umformatiert, damit eine weitere Institution
die Daten automatisch verarbeiten kann. Ich versuche praktisch eine Schnittstelle zu entwerfen, die mir schlicht und einfach die
Arbeit erleichtert.
Ich glaube es soweit auch schon gut gelöst zu haben, stoße jedoch auf ein Problem. Nachdem die Formatierung der jeweiligen Datei
abgeschlossen wurde, möchte ich diese natürlich speichern. Und genau da zerhaut es mir die Formatierung.
Sub CSVZeichenketteErsetzenInOrdner()
Dim folderPath As String
Dim fileName As String
Dim csvData As Workbook
Dim csvSheet As Worksheet
Dim lastRow As Long
Dim lastColumn As Long
Dim i As Long
Dim j As Long
' Ordnerpfad mit den CSV-Dateien
folderPath = "C:\absatzlisten"
' Überprüfen, ob der Ordner existiert
If Not FolderExists(folderPath) Then
MsgBox "Der angegebene Ordner existiert nicht."
Exit Sub
End If
' Schleife über alle CSV-Dateien im Ordner
fileName = Dir(folderPath & "\*.csv")
Do While fileName > ""
' Öffnen der CSV-Datei
Set csvData = Workbooks.Open(folderPath & "\" & fileName)
Set csvSheet = csvData.Sheets(1)
' Bestimmen der letzten Zeile und Spalte in der CSV-Datei
lastRow = csvSheet.Cells(csvSheet.Rows.Count, 1).End(xlUp).Row
lastColumn = csvSheet.Cells(1, csvSheet.Columns.Count).End(xlToLeft).Column
' Durchsuchen und Ersetzen der Zeichenketten in jeder Zeile
For i = 1 To lastRow
For j = 1 To lastColumn
' Ersetzen von " durch =
csvSheet.Cells(i, j).Value = Replace(csvSheet.Cells(i, j).Value, """", "=")
' Ersetzen von = == durch =
csvSheet.Cells(i, j).Value = Replace(csvSheet.Cells(i, j).Value, "= ==", "=")
' Ersetzen von === durch =
csvSheet.Cells(i, j).Value = Replace(csvSheet.Cells(i, j).Value, "===", "=")
' Ersetzen von = durch "
csvSheet.Cells(i, j).Value = Replace(csvSheet.Cells(i, j).Value, "=", Chr(34), 1, -1, vbTextCompare)
' Löschen von leerzeichen
'csvSheet.Cells(i, j).Value = Trim(csvSheet.Cells(i, j).Value)' = Erstmal noch deaktiviert
Next j
Next i
' Speichern und Schließen der CSV-Datei = hier zerschießt sich leider die Formatierung
csvData.Close SaveChanges:=True
' Nächste CSV-Datei im Ordner
fileName = Dir
Loop
MsgBox "Die Zeichenketten wurden in allen CSV-Dateien im Ordner ersetzt."
End Sub
Function FolderExists(folderPath As String) As Boolean
Dim folder As Object
On Error Resume Next
Set folder = CreateObject("Scripting.FileSystemObject").GetFolder(folderPath)
On Error GoTo 0
FolderExists = Not folder Is Nothing
End Function
Wenn ich das Makro mit F8 durchtackte sieht die Tabelle bei den einzelnen Schritten Prima aus.
Erst wenn die Datei gespeichert werden soll, habe ich wieder Anführungszeichen, wo keine hin sollen :-)
Vielleicht bin ich einfach nur grad blind und sehe den Wald vor lauter Bäumen nicht, bin für jede Hilfe dankbar.
Gruß
Kai