Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

CSV Export Spalte nicht mit exportieren
#1
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
Antworten Top
#2
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
Gruß
Michael
Antworten Top
#3
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?
Antworten Top
#4
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?
Gruß
Michael
Antworten Top
#5
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!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste