Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1468to1472
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

csv Deitei erstellen

csv Deitei erstellen
18.01.2016 16:40:30
Erik
Hallo zusammen!
Habe folgendes Macro gefunden:
Sub csv_umwandel()
Dim Bereich As Object, Zeile As Object, Zelle As Object
Dim strTemp As String
Dim strDateiname As String
Dim strTrennzeichen As String
strDateiname = ActiveWorkbook.FullName
strDateiname = Replace(strDateiname, ".xls", ".csv")
strTrennzeichen = InputBox("Welches Trennzeichen soll verwendet werden?", "CSV-Export", ";") _
If strTrennzeichen = "" Then Exit Sub
Set Bereich = Selection
Open strDateiname For Output As #1
For Each Zeile In Bereich.Rows
For Each Zelle In Zeile.Cells
If InStr(1, Zelle.Text, strTrennzeichen) > 0 Then
strTemp = strTemp & """" & CStr(Zelle.Text) & """" & strTrennzeichen
Else
strTemp = strTemp & CStr(Zelle.Text) & strTrennzeichen
End If
Next
If Right(strTemp, 1) = strTrennzeichen Then strTemp = Left(strTemp, Len(strTemp) - 1)
Print #1, strTemp
strTemp = ""
Next
Close #1
Set Bereich = Nothing
MsgBox "Datei wurde exportiert nach" & vbCrLf & strDateiname
End Sub
Ich habe folgendes Problem:
Wenn ich aus meiner Excel Tabelle Spalten markiere (immer Spalten D bis G !)
sollten die Sortierung in der auszugebenden *.csv Datei so aussehen:
Spalte A - D ein Platzhalter zb.: x
dann die markierten Spalten aber in der Reihenfolge:
Spalte E, Spalte G, Spalte D und Splate F.
Ist sowas machbar ? :-)
Gruß
Erik

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
geht mit Array besser als mit Range
19.01.2016 21:01:11
Michael
Hi Erik,
hier das geänderte Makro:
Option Explicit
Sub csv_umwandel()
Dim strTemp As String
Dim strDateiname As String
Dim strTrennzeichen As String
Dim aB As Variant   ' Bereich als ARRAY
Dim r() As Variant
Dim z As Long, s As Long ' zeile/Spalte im Array aB
' Spalte E, Spalte G, Spalte D und Splate F.
r = Array(2, 4, 1, 3)   ' Index in r geht von 0 bis 3, siehe Schleife unten
If Selection.Columns.Count  4 Or Selection(1).Column  4 Then
MsgBox "Es wurde nicht D-G selektiert"
Exit Sub
End If
strDateiname = ActiveWorkbook.FullName
strDateiname = Replace(strDateiname, ".xls", ".csv")
strTrennzeichen = InputBox("Welches Trennzeichen soll verwendet werden?", "CSV-Export", ";") _
_
If strTrennzeichen = "" Then Exit Sub
aB = Selection   ' hier von 1 bis 4, also D=1 .. G=4
' bzw. wegen r: 2,4,1,3 = E,G,D,F
Open strDateiname For Output As #1
For z = 1 To UBound(aB, 1)
strTemp = ""
' zunächst: "Spalte A - D ein Platzhalter zb.: x"
For s = 1 To 4: strTemp = strTemp & "x" & strTrennzeichen: Next
' dann aus den Spalten D-G:
For s = 0 To 3
If InStr(1, aB(z, r(s)), strTrennzeichen) > 0 Then
strTemp = strTemp & """" & aB(z, r(s)) & """"
Else
strTemp = strTemp & CStr(aB(z, r(s)))
End If
' immer Trennzeichen, außer beim Letzten...
If s 
und die Datei: https://www.herber.de/bbs/user/102888.xls
Schöne Grüße,
Michael

Anzeige
AW: geht mit Array besser als mit Range
22.01.2016 10:12:40
Erik
Vielen Dank !
Funktioniert super.
Gruß
Erik

freut mich, danke für die Rückmeldung,
22.01.2016 12:46:06
Michael
Erik,
und Gruß zurück,
Michael

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige