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
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 AsInteger Dim startRow As Integer, StartCol As Integer, selRow As Integer, selCol AsInteger Dim myC As Range Dim expFolder As String, expFileName AsString Dim myDiv As String, tmpExpText As String, expText AsString '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" ExitSub EndIf '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 EndIf 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 ThenExitSub 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 EndIf Else 'Daten erstmalig schreiben Open expFileName For Output As #1 Print #1, expText Close #1 EndIf MsgBox "Daten exportiert" EndSub
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!