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

Forumthread: VBA Datenarray direkt in csv-schreiben

VBA Datenarray direkt in csv-schreiben
19.06.2020 14:12:29
Frank
Hallo zusammen,
via VBA habe ich Daten in ein Array (daten_arr) geschaufelt, dieses hat 5 Spalten und n Zeilen.
Ich möchte die Daten des Arrays nun in eine neu zu erstelende csv-Datei schreiben und zwar ohne, dass die Daten erst noch in eine Excelmappe geschrieben werden.
Ich dachte an etwas in dieser Art:
file = "C:\!FLATFILES-FC\pm_data.csv"
Open file For Output As #1
Print #1, daten_arr
Close #1
Kann jemand helfen?
Herzlichen Dank,
Frank
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Beispiel
19.06.2020 14:21:29
Fennek
Hallo,
hier ein Beispiel ein Array in ein 1-dim Array (eine Zeile) unzuwandeln:

Dim alt1
alt = Sheets("alt").Cells(1).CurrentRegion
ReDim alt1(UBound(alt))
For i = 1 To UBound(alt)
alt1(i) = Join(Application.Index(alt, i, 0), ";")
Next i
mfg
Anzeige
AW: Beispiel
19.06.2020 15:12:44
Frank
danke.
AW: VBA Datenarray direkt in csv-schreiben
19.06.2020 14:22:56
Daniel
Hi
Schon mal in der Hilfe nachgeschaut?
Da sind ja gelegentlich mal Codebeispiele drin.
Über Open und Print solltest du in den Themenkomplex einsteigen können (siehe auch!)
Alternativ sollte der Weg über die Exceldatei auch nicht aufwendiger sein.
Workbooks.Add
ActiveSheet.Cells(1, 1).resize(ubound(Daten_arr, 1), Ubound(Daten_Art, 2) = Daten_Art
ActiveWorkbook.saveas file, xlcsv, local:=True
ActiveWorkbook.close false
Gruß Daniel
Anzeige
AW: VBA Datenarray direkt in csv-schreiben
19.06.2020 14:26:28
Frank
danke, nein, hatte nicht in die hilfe geschaut.
finde es halt unnötig, die daten erst noch in ein blatt zu schreiben. da brauche ich sie ja nicht.
ich hätte ghofft, ich muss nicht durch die einzelnen zeilen des arrays marschieren...
AW: VBA Datenarray direkt in csv-schreiben
19.06.2020 14:37:33
Daniel
Klar ist es unnötig.
Aber eben nicht mehr aufwand und es reicht im Prinzip Anfängerwissen um das programmieren zu können.
Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Datenarray direkt in eine CSV-Datei schreiben mit VBA


Schritt-für-Schritt-Anleitung

Um ein Datenarray direkt in eine CSV-Datei zu schreiben, kannst du folgenden VBA-Code verwenden:

Sub DatenArrayInCSV()
    Dim daten_arr As Variant
    Dim file As String
    Dim i As Long, j As Long
    Dim csvLine As String

    ' Beispiel-Datenarray
    daten_arr = Array(Array("Spalte1", "Spalte2", "Spalte3", "Spalte4", "Spalte5"), _
                      Array("Wert1", "Wert2", "Wert3", "Wert4", "Wert5"), _
                      Array("Wert6", "Wert7", "Wert8", "Wert9", "Wert10"))

    file = "C:\!FLATFILES-FC\pm_data.csv"

    Open file For Output As #1
    For i = LBound(daten_arr) To UBound(daten_arr)
        csvLine = ""
        For j = LBound(daten_arr(i)) To UBound(daten_arr(i))
            csvLine = csvLine & daten_arr(i)(j) & IIf(j < UBound(daten_arr(i)), ";", "")
        Next j
        Print #1, csvLine
    Next i
    Close #1
End Sub

Dieser Code erstellt eine CSV-Datei und schreibt die Daten aus dem Array daten_arr direkt hinein. Stelle sicher, dass du den Pfad zur Datei anpasst.


Häufige Fehler und Lösungen

  1. Dateipfad ist falsch: Achte darauf, dass der angegebene Pfad existiert. Wenn nicht, wird die Datei nicht erstellt.

  2. Array-Indizes: Wenn das Array keine Daten enthält oder du die Indizes falsch verwendest, kann es zu Laufzeitfehlern kommen. Überprüfe die Dimensionen des Arrays.

  3. Zugriffsrechte: Stelle sicher, dass du die notwendigen Berechtigungen hast, um in das angegebene Verzeichnis zu schreiben.


Alternative Methoden

Eine alternative Methode zur Erstellung einer CSV-Datei besteht darin, die Daten zuerst in eine Excel-Arbeitsmappe zu schreiben und dann die Datei als CSV zu speichern. Hier ist ein Beispiel:

Sub DatenArrayInCSV_Alternative()
    Dim daten_arr As Variant
    Dim file As String

    ' Beispiel-Datenarray
    daten_arr = Array(Array("Spalte1", "Spalte2", "Spalte3", "Spalte4", "Spalte5"), _
                      Array("Wert1", "Wert2", "Wert3", "Wert4", "Wert5"))

    file = "C:\!FLATFILES-FC\pm_data.csv"

    Workbooks.Add
    ActiveSheet.Cells(1, 1).Resize(UBound(daten_arr, 1) + 1, UBound(daten_arr(0), 1) + 1) = daten_arr
    ActiveWorkbook.SaveAs Filename:=file, FileFormat:=xlCSV
    ActiveWorkbook.Close False
End Sub

Diese Methode erfordert, dass du die Daten zuerst in eine Excel-Arbeitsmappe schreibst, bevor du die CSV-Datei erstellst.


Praktische Beispiele

Hier sind einige Beispiele für die Verwendung von VBA zur Erstellung von CSV-Dateien:

  1. Einfaches 2D-Array: Verwende ein 2-dimensionales Array, um Daten zu speichern und diese dann in eine CSV-Datei zu exportieren.

  2. Dynamische Arrays: Wenn du Daten aus einer Datenquelle wie einer Datenbank abrufst, kannst du diese in ein Array laden und dann mit der oben beschriebenen Methode speichern.


Tipps für Profis

  • Verwende Join für einfache Arrays: Wenn du ein 1-dimensionales Array hast, kannst du die Join-Funktion verwenden, um die Daten schnell in eine CSV-Zeile zu verwandeln.

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um unerwartete Probleme beim Schreiben in die CSV-Datei zu vermeiden.

  • CSV-Formatierungen: Achte darauf, dass die CSV-Daten richtig formatiert sind, insbesondere wenn sie Sonderzeichen enthalten.


FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen einem CSV und einem Excel-Dokument?
CSV-Dateien sind einfache Textdateien, die Daten durch Kommas oder Semikolons trennen, während Excel-Dokumente komplexe Formatierungen und mehrere Blätter unterstützen.

2. Kann ich auch mit großen Datenmengen in CSV arbeiten?
Ja, aber achte darauf, dass deine VBA-Implementierung optimiert ist, um die Leistung zu maximieren, insbesondere bei großen Arrays.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige