Selection-Ausgabe in Textfile
21.08.2009 23:44:54
Erich
Hi Roland,
hier zwei Varianten, die vielleicht schon ausreichen:
Option Explicit
Sub SelInText1()
Dim rngZ As Range, arrV, strE As String, kk As Integer
Const strDel As String = " " ' Trennzeichen
For Each rngZ In Selection.Rows
arrV = Application.Transpose(Application.Transpose(rngZ.Value))
If strE "" Then strE = strE & vbCrLf
strE = strE & Join(arrV, strDel)
Next rngZ
strE = Replace(strE, ",", ".")
kk = FreeFile(1)
Open "c:\temp\SelInText.txt" For Output As kk ' Ausgabedatei - anpassen
Print #kk, strE
Close kk
End Sub
Sub SelInText2()
Dim rngZ As Range, arrV, strE As String, kk As Integer, ss As Long
Const strDel As String = " " ' Trennzeichen
For Each rngZ In Selection.Rows
arrV = Application.Transpose(Application.Transpose(rngZ.Value))
For ss = 1 To UBound(arrV)
arrV(ss) = Replace(arrV(ss), ",", ".")
Next ss
If strE "" Then strE = strE & vbCrLf
strE = strE & Join(arrV, strDel)
Next rngZ
kk = FreeFile(1)
Open "c:\temp\SelInText.txt" For Output As kk ' Ausgabedatei - anpassen
Print #kk, strE
Close kk
End Sub
In Variante 1 wird erst die gesamte Ausgabe in einem String strE gesammelt,
dann werden in den (langen) String alle Kommata durch Punkte ersetzt.
Wenn strE sehr lang wird, könnte es sein, dass die Funktion Replace nicht mehr korrekt arbeitet.
Deshalb wird in Variante 2 die Ersetzung mit Replace für jede Zeile einzeln vorgenommen.
Achtung: Jedes Komma - auch innerhalb eines Textes - wird durch einen Punkt ersetzt.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort