Export CSV File per Makro | Herbers Excel-Forum

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
InputBox MsgBox


Betrifft: Export CSV File per Makro
von: Thorsten Böing
Geschrieben am: 10.11.2009 11:34:57

Hallo Experten,
ich habe ein Problem und suche eine Lösung.
Beim Speichern einer Datei als CSV manuell über Daie/Speichern werden die Daten in dem CSV File mit einem Semikolon (;) getrennt. Beim speichern über VBA wird das CSV mit einem Komma (,) getrennt.
ActiveWorkbook.SaveAs Filename:=Dateiname, FileFormat:=xlCSVMSDOS, CreateBackup:=False
Wie kann ich das CSV File über eine Makro erstellen, in dem die einzelnen Spöaten mit einem Semikolon (;) getrennt sind?
Danke für Eure Hilfe
Gruß
thoboe

Betrifft: AW: Export CSV File per Makro
von: Oberschlumpf
Geschrieben am: 10.11.2009 11:45:57
Hi Thorsten
Geht das hier (ungetestet, weil hab deine CSV-Datei nicht)

Sub sbSeperator()
    Dim lstrZeile As String
    Open "DeinPfad\Deine-CSV-Datei" For Input As #1
    Open "DeinPfad\dummy.txt" For Output As #2
        Do Until Eof(1)
            Line Input #1, lstrZeile
                lstrZeile = Replace(lstrZeile, ",", ";")
                Print #2, lstrZeile
        Loop
    Close
    Kill "DeinPfad\Deine-CSV-Datei"
    Name "DeinPfad\dummy.txt", "DeinPfad\Deine-CSV-Datei"
End Sub
Hilfts?
Ciao
Thorsten

Betrifft: AW: Export CSV File per Makro
von: Worti
Geschrieben am: 10.11.2009 11:46:15
Hi Thorsten,
vielleicht hilft dir das weiter:
'***********************************************************************************************
' Autor: Worti *
' Datum 23.05.2007 *
' Aufgabe: Exportiere vorgegebenen Bereich als CSV-Datei mit vorgebbarem Trennzeichen *
'***********************************************************************************************

Sub Exportiere_Bereich_in_CSV()
    
    Dim bisZeile As Long, zeile As Long
    Dim bisSpalte As Integer, Spalte As Integer
    Dim Trennzeichen As String, ExportBereich As String, Ausgabe As String
    Dim NewFileName
    
    
    Close #1
    NewFileName = Application.GetSaveAsFilename(fileFilter:="CSV Files (*.csv), *.csv")
    
    If NewFileName <> False Then
       Open NewFileName For Output As #1
               
       ' Hier Trennzeichen eingeben
       Trennzeichen = InputBox("Bitte geben Sie das gewünschte Trennzeichen ein: ", " _
Trennzeichen", ";")
       If Trennzeichen = "" Then
          'Standard-Trennzeichen Semikolon
          Trennzeichen = ";"
       End If
                        
       'Zu exportierender Bereich
       ExportBereich = InputBox("Bitte den zu exportierenden bereich eingeben: ", "Bereich",  _
ActiveSheet.UsedRange.Address(False, False))
       If ExportBereich = "" Then
          'Wenn leer, dann benutzten Bereich exportieren
          ExportBereich = ActiveSheet.UsedRange.Address
       End If
       
       bisZeile = ActiveSheet.Range(ExportBereich).Rows.Count + ActiveSheet.Range(ExportBereich) _
.Row - 1
       bisSpalte = ActiveSheet.Range(ExportBereich).Columns.Count + ActiveSheet.Range( _
ExportBereich).Column - 1
        
       For zeile = ActiveSheet.Range(ExportBereich).Row To bisZeile
           Ausgabe = ""
           For Spalte = ActiveSheet.Range(ExportBereich).Column To bisSpalte
               Ausgabe = Ausgabe & ActiveSheet.Cells(zeile, Spalte).Value
               If Spalte <> bisSpalte Then
                   Ausgabe = Ausgabe & Trennzeichen
               End If
           Next Spalte
           Print #1, Ausgabe
       Next zeile
            
       Close #1
    
    End If
End 

Sub 
Gruß Worti

Betrifft: AW: Export CSV File per Makro
von: Thorsten Böing
Geschrieben am: 10.11.2009 11:57:21
Danke für die Hilfe!
Der Ansatz von Worti hat mich auf den richtigen Weg gebracht.
Gruß
Thorsten

Betrifft: Per VBA : Parameter LOCAL:=TRUE
von: NoNet
Geschrieben am: 10.11.2009 20:08:04
Hallo Thorsten,
das lässt sich per VBA einfacher lösen :
Schau Dir mal die Onlinehilfe zu ActiveWorkbook.SaveAs an :
Dort existiert (zumindest unter Excel 2003 - bei XP bin ich nicht ganz sicher !) das Argument LOCAL:=TRUE, damit erreichst Du, dass das lokale Trennzeichen der Systemsteuerung verwendet wird, in deutschen Excel-Versionen also standardmäßig das Semikolon !
Gruß, NoNet

Betrifft: AW: Per VBA : Parameter LOCAL:=TRUE
von: Camba
Geschrieben am: 11.11.2009 11:10:28
Ich hab dazu auch was,
damit kannst du sogar auswählen was für ein trennzeichen du setzen möchtest

Sub SaveCSV()
' Speichert den Inhalt eines Arbeitsblatts als CSV-Datei
' 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
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
Open strDateiname For Output As #1
For Each Zeile In Bereich.Rows
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.Text) & """" & strTrennzeichen
Else
strTemp = strTemp & CStr(Zelle.Text) & strTrennzeichen
End If
Next
If Right(strTemp, 1) = strTrennzeichen Then strTemp = Left(strTemp, Len(strTemp) - 1)
Print #1, strTemp
strTemp = ""
Next
Close #1
Set Bereich = Nothing
MsgBox "Datei wurde exportiert nach" & vbCrLf & strDateiname
End Sub


Beiträge aus den Excel-Beispielen zum Thema "Export CSV File per Makro"