Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

nur bestimmte spalten in csv exportieren

Forumthread: nur bestimmte spalten in csv exportieren

nur bestimmte spalten in csv exportieren
26.02.2006 22:46:40
david
hallo,
ich möchte gerne ein excel-file als csv-exportieren, allerdings möchte ich nur bestimmte spalten exportieren und auch deren spalten-überschrift beeinflussen.
bin für jeden tipp dankbar.
grüße david
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: nur bestimmte spalten in csv exportieren
26.02.2006 23:11:57
Ramses
Hallo
hier mal ein Beispiel für einen vorher selektierten Bereich
Sub export_selected_Range_and_save_as_CSV()
    '(C) by Ramses
    'Exportiert einen ausgewählten Bereich in ein zu definierendes Textfile
    Dim i As Integer, n As Integer, maxExpCol As Integer, Qe As Integer
    Dim startRow As Integer, StartCol As Integer, selRow As Integer, selCol As Integer
    Dim myC As Range
    Dim expFolder As String, expFileName As String
    Dim myDiv As String, tmpExpText As String, expText As String
    'Maximal zu exportierende Spalten
    'Dieser Parameter ist anzupassen, um unterschiedliche Bereiche
    'in ein einheitliches Exportformat zu bringen
    maxExpCol = 25
    'Default Pfad incl abschliessendem Backslash
    expFolder = "C:\Temp\"
    'Standard Name für TextExportFile
    expFileName = "Export.csv"
    '************************************************
    'Ab hier keine Änderungen mehr vornehmen
    'Trennzeichen für das CSV-File
    myDiv = ";"
    If Selection.Columns.count > maxExpCol Then
        MsgBox "Maximal zu exportierende Spaltenzahl überschritten"
        Exit Sub
    End If
    'Starbereich festlegen
    startRow = Selection.Range("A1").Row
    StartCol = Selection.Range("A1").Column
    'Scheifenparameter initialisieren
    selRow = Selection.Rows.count
    selCol = Selection.Columns.count
    For i = startRow To startRow + selRow
        tmpExpText = ""
        For n = StartCol To StartCol + selCol
            tmpExpText = tmpExpText & Cells(i, n).text & myDiv
        Next n
        'Exportfile auf erforderliche Länge bringen
        If Len(tmpExpText) < maxExpCol Then
            For n = Len(tmpExpText) To maxExpCol
                tmpExpText = tmpExpText & myDiv
            Next n
        End If
        expText = expText & tmpExpText & vbCrLf
    Next i
    'Exportfile und Speicherpfad kontrollieren
    expFileName = Application.GetSaveAsFilename(InitialFileName:=expFolder & expFileName, _
        fileFilter:="CSV Files (*.csv), *.csv)", Title:="Exportpfad definieren")
    If Dir(expFileName) <> "" Then
        Qe = MsgBox("Sollen die Daten an die existierende Datei angehängt werden," & vbCrLf & _
            "oder soll die Datei überschrieben werden ?" & vbCrLf & vbCrLf & _
            "JA = Anhängen" & vbCrLf & "NEIN = Datei überschreiben" & vbCrLf & "ABBRECHEN = Abbrechen", _
            vbYesNoCancel + vbCritical + vbDefaultButton1, "Exportverhalten definieren")
        If Qe = vbCancel Then Exit Sub
        If Qe = vbYes Then
            'Daten anhängen
            Open expFileName For Append As #1
            Print #1, expText
            Close #1
        Else
            'Daten überschreiben
            Open expFileName For Output As #1
            Print #1, expText
            Close #1
        End If
    Else
        'Daten erstmalig schreiben
        Open expFileName For Output As #1
        Print #1, expText
        Close #1
    End If
    MsgBox "Daten exportiert"
End Sub


Das mit den Spaltenüberschriften, kannst du bei deinem Level sicher anpassen.
Gruss Rainer
Anzeige
AW: nur bestimmte spalten in csv exportieren
27.02.2006 01:25:58
davod
dank dir rainer.
habs folgender maßen geändert:
startRow = 1
lastRow = Range("A65536").End(xlUp).Row
For i = startRow To lastRow
tmpExpText = ""
'hier die zu exportierenden Spalten eintragen
For Each Spaltenarray In Array("B", "C", "D")
StartCol = Range(Spaltenarray + "1").Column
tmpExpText = tmpExpText & Cells(i, StartCol).Text & myDiv
Next Spaltenarray
expText = expText & tmpExpText & vbCrLf
Next i
gute nacht!
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Nur bestimmte Spalten in CSV exportieren


Schritt-für-Schritt-Anleitung

Um nur bestimmte Spalten aus einer Excel-Datei als CSV zu exportieren und die Spaltenüberschriften zu beeinflussen, kannst du den folgenden VBA-Code verwenden:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Wähle "Einfügen" > "Modul", um ein neues Modul zu erstellen.
  3. Kopiere den folgenden Code in das Modul:
Sub export_selected_Range_and_save_as_CSV()
    Dim i As Integer, n As Integer
    Dim maxExpCol As Integer
    Dim expFolder As String, expFileName As String
    Dim myDiv As String, tmpExpText As String, expText As String

    maxExpCol = 25
    expFolder = "C:\Temp\"
    expFileName = "Export.csv"
    myDiv = ";"

    Dim startRow As Integer, selRow As Integer, selCol As Integer
    startRow = 1 ' oder wähle die gewünschte Startzeile
    selRow = Range("A65536").End(xlUp).Row

    For i = startRow To selRow
        tmpExpText = ""
        ' Hier die zu exportierenden Spalten eintragen
        For Each Spaltenarray In Array("B", "C", "D")
            StartCol = Range(Spaltenarray & "1").Column
            tmpExpText = tmpExpText & Cells(i, StartCol).Text & myDiv
        Next Spaltenarray
        expText = expText & tmpExpText & vbCrLf
    Next i

    expFileName = Application.GetSaveAsFilename(InitialFileName:=expFolder & expFileName, _
        fileFilter:="CSV Files (*.csv), *.csv", Title:="Exportpfad definieren")

    Open expFileName For Output As #1
    Print #1, expText
    Close #1

    MsgBox "Daten exportiert"
End Sub
  1. Passe den Pfad und den Dateinamen nach Bedarf an.
  2. Führe das Makro aus, um die Daten als CSV zu exportieren.

Häufige Fehler und Lösungen

  • Fehler: "Maximal zu exportierende Spaltenzahl überschritten"

    • Lösung: Stelle sicher, dass du die Anzahl der Spalten im Array an die Variable maxExpCol anpasst.
  • Fehler: "Dateipfad nicht gefunden"

    • Lösung: Überprüfe, ob der Pfad in der Variable expFolder korrekt ist und existiert.

Alternative Methoden

Falls du keine VBA-Programmierung nutzen möchtest, kannst du auch die Funktion "Speichern unter" verwenden:

  1. Wähle die gewünschten Spalten in Excel aus.
  2. Kopiere die Auswahl (Strg + C).
  3. Öffne ein neues Excel-Dokument und füge die Daten dort ein.
  4. Speichere das neue Dokument als CSV-Datei über "Datei" > "Speichern unter" und wähle das CSV-Format aus.

Praktische Beispiele

Angenommen, du hast eine Excel-Datei mit den Spalten A bis D, und du möchtest nur die Spalten B, C und D exportieren. Der oben angegebene VBA-Code ermöglicht es dir, diese spezifischen Spalten einfach zu exportieren, indem du das Array in der Schleife anpasst.


Tipps für Profis

  • Spaltenüberschriften anpassen: Du kannst die ersten Zeilen deines exportierten Textes anpassen, um benutzerdefinierte Spaltenüberschriften zu definieren. Füge einfach eine zusätzliche Zeile vor der Schleife hinzu, die expText initialisiert.

  • Automatisierung: Du kannst das Makro so anpassen, dass es automatisch bei jedem Öffnen der Datei ausgeführt wird, um regelmäßig bestimmte Daten zu exportieren.


FAQ: Häufige Fragen

1. Kann ich auch mehr als drei Spalten exportieren? Ja, du kannst die Anzahl der Spalten im Array anpassen, um beliebig viele Spalten zu exportieren.

2. Funktioniert dieser Code in Excel 2016? Ja, der VBA-Code ist mit Excel 2016 und neueren Versionen kompatibel. Achte darauf, die Makros in den Excel-Optionen zu aktivieren.

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