wie Chris, in Function gekapselt
06.03.2017 14:41:20
Michael
Hi,
das sieht dann z.B. so aus:
' allg. Modul, z.B. Modul1
Option Explicit
Function CSV_Erzeugen(Bereich As Range, Pfad$, t1$, t2$) As String
Dim aSp ' ohne Angabe = as variant, unten als Array
Dim z&, s& ' & = as long z wie Zeile, s wie Spalte
Dim st$ ' $ = as string, st wie string für Ausgabe
Dim maxZ&, maxS& ' Anzahl Zeilen und Spalten
Dim d As Integer ' d wie Dateinummer
On Error GoTo fehler
aSp = Bereich
maxZ = UBound(aSp)
maxS = UBound(aSp, 2)
For z = 1 To maxZ
For s = 1 To maxS
st = st & aSp(z, s) & t2 ' bei nur einer Spalte Aufruf mit t2=""
Next
st = st & t1 ' Zeilenschaltung, i.a. vbCrLf
Next
' statt For-Schleife kannst Du auch mal join() testen
d = FreeFile
Open Pfad For Output As #d
Print #d, st
Close #d
fehler:
If Err.Number 0 Then CSV_Erzeugen = Err.Description Else CSV_Erzeugen = "ok"
End Function
Sub aufruf()
Dim Pfad$, Ergebnis$
Dim Bereich As Range
' "H:\My Files\" & Format(Now, "yyyymmdd-hhmmss") & "_" & Environ("Username")
Pfad = ThisWorkbook.Path & "\"
Pfad = Pfad & Format(Now, "yyyymmdd-hhmmss") & "_" & Environ("Username") _
& ".csv" ' oder .txt oder wie auch immer
With Sheets("Tabelle2")
Set Bereich = .Range("A1", .Cells(.Rows.Count, 1).End(xlUp))
End With
'Variante mit Prüfung des Pfads
'If Dir(Pfad) = "" Then
' Ergebnis = CSV_Erzeugen(Bereich, Pfad, vbCrLf,"")
' If Ergebnis = "ok" Then
' MsgBox "Datei " & Pfad & " wurde erzeugt"
' Else
' MsgBox "Fehler: " & Ergebnis
' End If
' Else
' MsgBox "Datei bereits vorhanden"
'End If
' *** oder ganz einfach:
MsgBox CSV_Erzeugen(Bereich, Pfad, vbCrLf, "")
' Trennen z.B. mit: vblf, vbcr oder vbcrlf
End Sub
Schöne Grüße,
Michael