Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: CSV Datei via VBA erstellen

CSV Datei via VBA erstellen
04.02.2015 15:52:10
Marc
Hallo zusammen,
ich habe den folgenden Quellcode erstellt. Mein Porblem ist es das die CSV-Datei durch "," getrennt ist und nicht durch ";" wie ich es benötige. Ich arbeite mit Office 2010. Im Forum habe ich bereits den Lösungsansatz von https://www.herber.de/forum/archiv/1112to1116/1115787_Export_CSV_File_per_Makro.html
gefunden weiß jedoch nicht genau wie ich dieses bei mir unterbringen kann.
Über eure hilfe würde ich mich sehr freuen.
Gruß Marc

Sub StelleAutoFilterEin()
Selection.AutoFilter Field:=1, Criteria1:="x"
Application.ScreenUpdating = False
ActiveSheet.Unprotect
Range("A1:S1000").Select
Selection.Copy
Workbooks.Add
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
True, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteComments, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Columns("A:S").AutoFit
Dim pfad As String
Dim Wert1 As String
Dim Wert2 As String
pfad = "C:\Users\Praktikant-1\Desktop\"
Wert1 = InputBox("Bitte Maschine eingebn")
Wert2 = InputBox("Bitte Seriennummer eingebn")
datum = Format(Date, "yyyymmdd")
unterstrich = "_"
ActiveWorkbook.SaveAs Filename:=pfad & datum & unterstrich & Wert1 & unterstrich & Wert2 &  _
unterstrich & "Messstellenplan", FileFormat:= _
xlCSV, CreateBackup:=False, Local:=True
ActiveWorkbook.Save
End Sub

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CSV Datei via VBA erstellen
04.02.2015 16:17:07
Rudi
Hallo,
Sub StelleAutoFilterEin()
Dim pfad As String
Dim Wert1 As String
Dim Wert2 As String
Dim Datum As String
Dim strCSV As String
Const Unterstrich = "_"
Selection.AutoFilter Field:=1, Criteria1:="x"
Application.ScreenUpdating = False
ActiveSheet.Unprotect
Range("A1:S1000").Copy
Workbooks.Add
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
True, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteComments, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Columns("A:S").AutoFit
strCSV = CreateCsvText(Range("A1").CurrentRegion)
pfad = "C:\Users\Praktikant-1\Desktop\"
Wert1 = InputBox("Bitte Maschine eingebn")
Wert2 = InputBox("Bitte Seriennummer eingebn")
Datum = Format(Date, "yyyymmdd")
Open pfad & Datum & Unterstrich & Wert1 & Unterstrich & Wert2 & _
Unterstrich & "Messstellenplan.csv" For Output As #1
Print #1, strCSV
Close #1
ActiveWorkbook.Save
End Sub

Function CreateCsvText(rng As Range)
Dim lngRow As Long
Dim vntArray As Variant
Dim strText As String
Const strSep As String = ";"
With rng
For lngRow = 1 To .Rows.Count
vntArray = .Cells(lngRow, 1).Resize(, .Columns.Count)
vntArray = WorksheetFunction.Transpose(WorksheetFunction.Transpose(vntArray))
If strText = "" Then
strText = Join(vntArray, strSep)
Else
strText = strText _
& vbCrLf _
& Join(vntArray, strSep)
End If
Next
End With
CreateCsvText = strText
End Function
Gruß
Rudi

Anzeige
AW: CSV Datei via VBA erstellen
04.02.2015 16:57:22
Marc
Super Danke Rudi;-)
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

CSV-Datei mit VBA erstellen


Schritt-für-Schritt-Anleitung

Um eine CSV-Datei mit VBA zu erstellen, folge diesen Schritten. Dies funktioniert in Excel 2010 und neueren Versionen.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Füge ein neues Modul hinzu, indem du im Projekt-Explorer mit der rechten Maustaste auf „VBAProject (dein Dokument)“ klickst und „Einfügen“ > „Modul“ wählst.

  3. Kopiere den folgenden VBA-Code in das Modul:

    Sub StelleAutoFilterEin()
       Dim pfad As String
       Dim Wert1 As String
       Dim Wert2 As String
       Dim Datum As String
       Dim strCSV As String
       Const Unterstrich = "_"
    
       Selection.AutoFilter Field:=1, Criteria1:="x"
       Application.ScreenUpdating = False
       ActiveSheet.Unprotect
       Range("A1:S1000").Copy
       Workbooks.Add
       Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= True, Transpose:=False
       Columns("A:S").AutoFit
    
       strCSV = CreateCsvText(Range("A1").CurrentRegion)
       pfad = "C:\Users\Praktikant-1\Desktop\"
       Wert1 = InputBox("Bitte Maschine eingeben")
       Wert2 = InputBox("Bitte Seriennummer eingeben")
       Datum = Format(Date, "yyyymmdd")
    
       Open pfad & Datum & Unterstrich & Wert1 & Unterstrich & Wert2 & Unterstrich & "Messstellenplan.csv" For Output As #1
       Print #1, strCSV
       Close #1
       ActiveWorkbook.Save
    End Sub
    
    Function CreateCsvText(rng As Range)
       Dim lngRow As Long
       Dim vntArray As Variant
       Dim strText As String
       Const strSep As String = ";"
    
       With rng
           For lngRow = 1 To .Rows.Count
               vntArray = .Cells(lngRow, 1).Resize(, .Columns.Count)
               vntArray = WorksheetFunction.Transpose(WorksheetFunction.Transpose(vntArray))
               If strText = "" Then
                   strText = Join(vntArray, strSep)
               Else
                   strText = strText & vbCrLf & Join(vntArray, strSep)
               End If
           Next
       End With
       CreateCsvText = strText
    End Function
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro aus, indem du ALT + F8 drückst, das Makro auswählst und auf „Ausführen“ klickst.


Häufige Fehler und Lösungen

  • Problem: Die CSV-Datei wird mit Kommas statt mit Semikolons getrennt.
    Lösung: Stelle sicher, dass das strSep in der Funktion CreateCsvText auf ";" gesetzt ist, wie im obigen Beispiel.

  • Problem: Fehlermeldung beim Speichern der Datei.
    Lösung: Überprüfe den angegebenen Speicherpfad und stelle sicher, dass du die notwendigen Berechtigungen hast, um dort zu speichern.


Alternative Methoden

Eine andere Methode, um eine CSV-Datei zu erstellen, ist die Verwendung von Excel-Funktionen, um Daten zu exportieren:

  1. Daten als CSV speichern: Gehe zu „Datei“ > „Speichern unter“ und wähle im Dateityp „CSV (Comma delimited) (*.csv)“. Ändere das Trennzeichen gegebenenfalls in ein Semikolon, je nach Regionseinstellungen.
  2. Power Query verwenden: Du kannst auch Power Query nutzen, um Daten zu importieren und als CSV zu exportieren, was eine benutzerfreundliche Oberfläche bietet.

Praktische Beispiele

Ein Beispiel für das Erstellen einer CSV-Datei mit VBA könnte das Exportieren eines Berichts sein, der Maschinen- und Seriennummern enthält, die in einer Excel-Tabelle gespeichert sind. Der oben genannte Code ermöglicht es dir, die benötigten Daten zu filtern und in einer CSV-Datei zu speichern, die du dann für Analysen oder Berichte verwenden kannst.


Tipps für Profis

  • Fehlerbehandlung einfügen: Füge Fehlerbehandlungsroutinen in deinen Code ein, um besser mit unerwarteten Situationen umzugehen.

    On Error GoTo Fehlerbehandlung
    ' Dein Code hier
    Exit Sub
    Fehlerbehandlung:
    MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
  • Makros optimieren: Achte darauf, dass du Application.ScreenUpdating = False verwendest, um die Ausführungsgeschwindigkeit zu verbessern, und setze es wieder auf True, wenn das Makro abgeschlossen ist.


FAQ: Häufige Fragen

1. Wie erstelle ich eine CSV-Datei in Excel?
Du kannst eine CSV-Datei in Excel erstellen, indem du „Datei“ > „Speichern unter“ wählst und den Dateityp auf „CSV“ änderst.

2. Was ist der Unterschied zwischen .csv und .xls?
CSV-Dateien sind einfache Textdateien, die durch Kommas oder Semikolons getrennte Werte speichern, während .xls-Dateien Excel-Daten und Formate speichern, die mehr Funktionen bieten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige