Live-Forum - Die aktuellen Beiträge
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
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige