Sub SaveCSVUnicode()
' Speichert den Inhalt eines Arbeitsblatts als CSV-Datei in Unicode-Codierung
' mit wählbarem Trennzeichen und Maskierung von Einträgen
Dim Bereich As Object, Zeile As Object, Zelle As Object
Dim strTemp As String
Dim strDateiname As String
Dim strTrennzeichen As String
Dim strMappenpfad As String
Dim objFSO, objTextStream
strMappenpfad = ActiveWorkbook.FullName
strMappenpfad = Replace(strMappenpfad, ".xls", ".csv")
strDateiname = InputBox("Wie soll die CSV-Datei heißen (inkl. Pfad)?", "CSV-Export", _
strMappenpfad)
If strDateiname = "" Then Exit Sub
strTrennzeichen = InputBox("Welches Trennzeichen soll verwendet werden?", "CSV-Export", ",")
If strTrennzeichen = "" Then Exit Sub
Set Bereich = ActiveSheet.UsedRange
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextStream = objFSO.OpenTextFile(strDateiname, 2, True, -1)
For Each Zeile In Bereich.Rows
' Cells(2) entspricht der Spalte B, wenn die Spalte A die erste Spalte ist
If Zeile.Cells(2).Value = "e" Then
For Each Zelle In Zeile.Cells
If InStr(1, Zelle.Text, strTrennzeichen) > 0 Then
'Zellen, die ein Trennzeichen beinhalten in Anführungsstriche setzen
strTemp = strTemp & """" & CStr(Zelle.Value) & """" & strTrennzeichen
Else
strTemp = strTemp & CStr(Zelle.Value) & strTrennzeichen
End If
Next
If Right(strTemp, 1) = strTrennzeichen Then strTemp = Left(strTemp, Len(strTemp) - 1) & _
Chr(10)
objTextStream.Write strTemp
strTemp = ""
End If
Next
objTextStream.Close
Set Bereich = Nothing
MsgBox "Datei wurde exportiert nach" & vbCrLf & strDateiname
End Sub
exportiere ich eine Excel- in eine TXT-Datei im Unicode-Format.
Das Problem: Die Excel-Datei hat zig unnütze Spalten, die meine TXT auf mehrere MB aufblähen - weswegen ich gerne nur die Spalten C bis AI exportieren würde.
Als VBA-Laie mit nur äußerst rudimentären Kenntnissen würde mir dazu jetzt einfallen, an Stelle des
For Each Zelle In Zeile.Cells
irgendwas in der Richtung
For Each Zelle In Zeile.Cells Aber Nur Wenn Spaltennummer von Cells zwischen 3 und 35 ist
versuchen einzubauen :-)
Gibt es denn da eine Möglichkeit, so eine Einschränkung mit einzubauen? Oder muss ich das irgendwie über so eine Range lösen?
Kurzum: Wie kann ich das machen?