Clever-Excel-Forum

Normale Version: CSV Export Spalte nicht mit exportieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Zusammen,

ich habe eine Frage zu einem VBA Code:

Ich möchte aus einem Excel Sheet eine CSV Datei erstellen.

Die Daten stehen in Spalte A - L wobei Spalte I nicht mitexportiert werden soll genau wie Reihe 1.
Wenn ich Reihe I vor der Exportieren einfach ausblenden lasse vom Makro wird sie mir leider als leere Zelle mit exportiert. Gibt es hier einen Trick?

Mein Code sieht aktuell so aus:

Code:
Private Sub CSV_erstellen()
   Dim Bereich As Object, Zeile As Object, Zelle As Object
   Dim strTemp As String

   Dim strTrennzeichen As String
   Dim blnAnfuehrungszeichen As Boolean

   
   
       strDateiname = "xyz.csv"
   
   If (strDateiname = "") Then strDateiname = "test.csv"
   strDateiname = ActiveWorkbook.Path & "\" & strDateiname
   
   strTrennzeichen = ","
   'Sollen die Werte in AnfÙhrungszeichen exportiert werden?
   blnAnfuehrungszeichen = False
       
   Set Bereich = ActiveSheet.UsedRange
   
   Open strDateiname For Output As #1
       
   
   zeilen = 0
   
   For Each Zeile In Bereich.Rows
       zeilen = zeilen + 1
       For Each Zelle In Zeile.Cells
           If blnAnfuehrungszeichen = True Then
               strTemp = strTemp & """" & CStr(Zelle.Text) & """" & strTrennzeichen
           Else
               strTemp = strTemp & CStr(Zelle.Text) & strTrennzeichen
           End If
       Next
       strTemp = Left(strTemp, Len(strTemp) - 1)
       
       If (zeilen > 1) Then
           Print #1, strTemp
     
       End If
       
       'Debug.Print strTemp
       strTemp = ""
   Next

   
   
   Close #1
   Set Bereich = Nothing
     
   Application.DisplayAlerts = False
     'ActiveWindow.Close
   Application.DisplayAlerts = True
   
   MsgBox "CSV File is succesfully created"
End Sub


Hoffe ihr könnt mir weiterhelfen, sonst klappt sowohl das vorgeschaltete Prüfmakro als auch das erstellen der CSV sehr gut :)

Viele Grüße
Hallo,

ich kenne ja Deine Datei und die Daten nicht. Ich vermute mal, dass Du effektiv erst ab Zeile 3 Daten stehen hast (evtl. eine Überschriftszeile und eine Leerzeile?).
Probier mal die folgendene Änderung:
Code:
Private Sub CSV_erstellen()
Dim Bereich As Object, Zeile As Object, Zelle As Object
Dim strTemp As String

Dim strTrennzeichen As String
Dim blnAnfuehrungszeichen As Boolean

strDateiname = "xyz.csv"

If (strDateiname = "") Then strDateiname = "test.csv"
strDateiname = ActiveWorkbook.Path & "\" & strDateiname

strTrennzeichen = ","
'Sollen die Werte in AnfÙhrungszeichen exportiert werden?
blnAnfuehrungszeichen = False
    
Set Bereich = ActiveSheet.UsedRange

Open strDateiname For Output As #1
    
zeilen = 0

For Each Zeile In Bereich.Rows
    zeilen = zeilen + 1
        
    If (zeilen > 2) Then
         For Each Zelle In Zeile.Cells
            If Zelle.Column <> 9 Then
                If blnAnfuehrungszeichen = True Then
                    strTemp = strTemp & """" & CStr(Zelle.Text) & """" & strTrennzeichen
                Else
                    strTemp = strTemp & CStr(Zelle.Text) & strTrennzeichen
                End If
            End If
         Next
         strTemp = Left(strTemp, Len(strTemp) - 1)
         Print #1, strTemp
    End If
    
    'Debug.Print strTemp
    strTemp = ""
Next

Close #1
Set Bereich = Nothing
  
'Application.DisplayAlerts = False
'ActiveWindow.Close
'Application.DisplayAlerts = True

MsgBox "CSV File is succesfully created"
End Sub
Hallo Michael,

Danke für deine Hilfe!

Ich habe es jetzt gelöst mit :
Code:
Set Bereich = ActiveSheet.UsedRange
   
   Open strDateiname For Output As #1
   
   zeilen = 0
   
   For Each Zeile In Bereich.Rows
       Spalte = 0
       zeilen = zeilen + 1
       For Each Zelle In Zeile.Cells
           Spalte = Spalte + 1
                       
           If (Spalte = 9) Then
               
           ElseIf blnAnfuehrungszeichen = True Then
               strTemp = strTemp & "'""'" & CStr(Zelle.Text) & "'""'" & strTrennzeichen
           Else
               strTemp = strTemp & CStr(Zelle.Text) & strTrennzeichen
           End If
       Next
       strTemp = Left(strTemp, Len(strTemp) - 1)
       
       If (zeilen > 1) Then
           Print #1, strTemp
     
       End If


funktioniert gut 

Jetzt muss ich nur noch rausfinden, wie ich in die erste Spalte immer ein Hochkomma schreibe. In der Spalte ist in allen Datensätzen ein Hochkomma enthalten, es wird aber nicht mitexportiert.
Jemand eine Idee?
Na ja, wenn Du glücklich damit bist, soll es mir recht sein.

(18.12.2018, 15:45)Keksdose schrieb: [ -> ]In der Spalte ist in allen Datensätzen ein Hochkomma enthalten, es wird aber nicht mitexportiert.
Ein Hochkomma oder Anführungszeichen? Steht das Hochkomma sichtbar in der Zelle oder nur zur Kennzeichnung von Text?
es steht sichtbar in der Zelle - Ist für die IT das Kennzeichen hier ist kein Datensatz (warum auch immer die Engländer sich dafür das ' ausgesucht haben)

-- hab es geschafft ... bischen geschummelt aber sollte reichen

DANKE!