Clever-Excel-Forum

Normale Version: csv export mit semikolon
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo!

hab ne Frage zum Thema .csv.
Ich möchte eine Excel-Tabelle als csv exportieren. Jedoch muss das mit Semikolon als Trennzeichen passieren und alle Formatierungen der Tabelle übernommen werden. Gleichzeitig soll nur der gefilterte Bereich exportiert werden. Ich habe nun folgenden Code gefunden:


Code:
Sub Sheet_Nach_CSVDatei()
'hierbei bleibt die Formatierung der Zellen so wie sie angezeigt wird.
'Es muss alles so formatiert sein wie es später In der CSV sein soll.
Dim vntFileName As Variant
Dim lngFn As Long
Dim rngRow As Excel.Range
Dim rngCell As Excel.Range
Dim strDelimiter As String
Dim strText As String
Dim strTextCell As String
Dim bolErsteSpalte As Boolean
Dim rngColumn As Excel.Range
Dim wksQuelle As Excel.Worksheet

strDelimiter = ";" 'deutsches CSV-Format: ";", Englisches CSV-Format: ","

vntFileName = Application.GetSaveAsFilename("Test.csv", _
    FileFilter:="CSV-File (*.csv),*.csv")
If vntFileName = False Then Exit Sub

Set wksQuelle = ActiveSheet  'Beispiel oder: = ActiveWorkbook.Worksheets("Tabelle1")

lngFn = FreeFile
Open vntFileName For Output As lngFn
For Each rngRow In wksQuelle.UsedRange.Rows
  strText = ""
  bolErsteSpalte = True
  For Each rngCell In rngRow.Columns
  strTextCell = rngCell.Text 'Text! inclusive dem NumberFormat der Zelle
  If InStr(1, strTextCell, strDelimiter, 0) Then '## wenn alle Zellen mit " " eingeschlossen    _
_
_
werden sollen zeile auskommentieren
    'bewirkt das Werte die den Delimiter enthalten (was eigentlich nicht sein sollte) mit " "    _
_
_
eingeschlossen werden
    strTextCell = Chr(34) & strTextCell & Chr(34)
  End If '##
  If bolErsteSpalte Then
    strText = strTextCell
    bolErsteSpalte = False
  Else
    strText = strText & strDelimiter & strTextCell
  End If
  Next
  Print #lngFn, strText
Next
Close lngFn

End Sub


Er funktioniert soweit ganz gut, nur wird die ganze Tabelle exportiert und nicht nur den gefilterten Bereich. Hat jemand eine Idee wie man das realisieren kann.
Moin!
Gehe den Umweg über eine neue Mappe und kopiere nur den gefilterten Bereich:
ActiveSheet.Cells.SpecialCells(xlCellTypeVisible).Copy
  Workbooks.Add.ActiveSheet.Cells(1).PasteSpecial xlPasteAll

Gruß Ralf
Danke Ralf.
Wo in meinem Code muss ich den Codeschnipsel unterbringen? Huh
Hallöchen,

wenn Du die kopierten Daten weiter verarbeiten willst dann würde ich es vor der "Übernahme" des aktiven Blattes tun. Die neue Mappe hat es nämlich anschließend Smile

Das ist übrigens genau genommen nicht möglich
Zitat:alle Formatierungen der Tabelle übernommen werden
Die csv enthält reinen Text und nicht mal Schriftart und -größe werden mit geliefert ...