CSV per VBA erstellt: Zu viele ";"
Philipp
Ich habe folgendes Problem und ersuche um Eure Hilfe, wie man das lösen kann:
In Excel bereite ich Daten auf, die in eine CSV-Datei exportiert werden, für den Upload in ein Drittsystem.
Mein Hauptproblem ist folgendes: Die Datensätze haben unterschiedliche Längen. Über die selbe CSV-Datei werden Devisenkurse (6 Datenfelder pro Datensatz) und Zinssätze (5 Felder pro Datensatz) eingelesen.
d;24.07.2009;ZAR;10,9133287;10,9287747;10,9442207
z;24.07.2009;AUD;1;3,0175
1. Versuch: Ich habe versucht die CSV-Datei über VERKETTEN zu erstellen. Problem: Jeder Datensatz beginnt und endet mit einem Anführungszeichen, wenn man das Ergebnis im Editor ansieht. Leider habe ich keine Möglichkeit gefunden, diese Anführungszeichen los zu werden.
"d;24.07.2009;ZAR;10,9133287;10,9287747;10,9442207"
"z;24.07.2009;AUD;1;3,0175"
2. Versuch: Über ein Makro - das ich über das Archiv gefunden habe - die CSV-Datei selbst zu erstellen. Jetzt kämpfe ich mit dem Problem, dass ich am Ende der Datensätze ein bzw. zwei ";" zu viel habe:
d;24.07.2009;ZAR;10,9133287;10,9287747;10,9442207;
z;24.07.2009;AUD;1;3,0175;;
Anbei das Makro - vielleicht kann das jemand so anpassen, dass die Anführungszeichen am Ende entfallen!
Danke
LG Philipp
Sub CSVExport()
Dim sFile As Variant, msgAntwort As Variant
Dim Daten As Range, Zeile As Object, Zelle As Object
Dim strTemp As String
On Error GoTo errorhandler
With ActiveSheet
sFile = Application.GetSaveAsFilename(InitialFileName:="Test " & .Range("A2") & ".csv", _
FileFilter:="CSV-Datei (*.csv), *.csv")
If sFile = False Then Exit Sub
If Dir(sFile) "" Then
msgAntwort = MsgBox("Die Datei '" & sFile & "' besteht bereits. Möchten Sie die _
bestehende Datei ersetzen?", _
vbQuestion + vbYesNo, "Warnung")
If msgAntwort = vbNo Then Exit Sub
End If
Set Daten = .UsedRange
Close
Open sFile For Output As #1
For Each Zeile In Daten.Rows
If Zeile.Row > .Range("A65536").End(xlUp).Row Then
MsgBox "Die Datei wurde erfolgreich exportiert.", vbInformation, "Export _
erfolgreich"
Exit Sub
End If
For Each Zelle In Zeile.Cells
If (Zelle.Column = 2) And Zelle "" Then
strTemp = strTemp & CStr(Format(Zelle, "DD") & "." & Format(Zelle, "MM") _
& "." & Format(Zelle, "YYYY")) & ";"
Else
If Zelle.Column >= 22 And Zelle.Column "" Then
strTemp = strTemp & CStr(Format(Zelle, "0")) & ";"
Else
strTemp = strTemp & CStr(Zelle.Text) & ";"
End If
End If
Next Zelle
Print #1, strTemp
strTemp = ""
Next Zeile
Close #1
End With
MsgBox "Die Datei wurde erfolgreich exportiert.", vbInformation, "Export erfolgreich"
Exit Sub
errorhandler:
MsgBox "Es ist ein Fehler aufgetreten. Die Datei konnte nicht vollständig exportiert werden.", _
_
vbCritical, "Fehlermeldung"
End Sub