Zeilenschaltung für txt-Datei
01.09.2003 18:53:23
Jürgen
ich möchte Daten in eine Textdatei schreiben, damit die Daten in eine Fremd-Software (Datenbankprogramm)importiert werden können.
Die Fremd-Software verlangt hierzu die Feldtrennung durch Kommata; jeder Datensatz ist mit einem Cr (Ascii-Code 13) und Lf (Ascii-Code 10) abzuschließen.
Mit meinem nachstehenden Code habe ich versucht, dies zu realisieren.
Das Problem: Nach jedem Datensatz erscheint eine Leerzeile (Textdatei in Excel geöffnet). Dies führt jedoch zu einem Abbruch beim Import in der Fremd-Software.
Kann mir jemand helfen und sagen, wo mein Fehler liegt, d.h. wie verhindere ich die zusätzlich Leerzeile nach jedem Datensatz?
Bin für jeden Hinweis dankbar.
Gruß
Jürgen
Sub Uebernahme_Konto()
' Stand: 01.09.2003
' Thema: Die Prozedur übernimmt die Tabellendaten
' ins Ascii-Format zum Import in Fremd-Software
Dim rng As Range
Dim iRow As Integer, iCol As Integer, iFile As Integer
Dim sFile As String, sTxt As String, sFeld As String
Dim iLaenge As Integer, sNeuerText As String
Dim LetzteZeile As Integer
Dim wb As Workbook
Dim wsh As Worksheet
Set rng = Range("A1").CurrentRegion
sFile = "C:/Eigene Dateien/" & "Datei.k"
iFile = FreeFile
Open sFile For Output As iFile
For iRow = 4 To rng.Rows.Count
For iCol = 1 To rng.Columns.Count
sFeld = Cells(iRow, iCol).Value
'Feldlänge ergibt sich aus Zeile 3
'Feldlänge wird durch eigene Funktion Feldlaenge ermittelt
iLaenge = CInt(Feldlaenge(CStr(Cells(3, iCol))))
sNeuerText = Left(sFeld, iLaenge)
'Textlängen vergleichen
If Len(sFeld) > Len(sNeuerText) Then
Antwort = MsgBox("Der Text in Zeile " & iRow & ", Spalte " & iCol & ":" & vbCr _
& sFeld & vbCr _
& "ist länger als die vorgegebene Feldlänge." & vbCr _
& "Soll er gekürzt werden?" & vbCr _
& "Beispiel: " & sNeuerText, vbOKCancel,"Datenübernahme")
If Antwort = vbCancel Then
MsgBox "Die Prozedur wird abgebrochen!", vbCritical + vbOKOnly
Exit Sub
Else
sFeld = InputBox("Geben Sie den gekürzten Text ein:" & vbCr _
& "(" & sFeld & ")", "Datenübernahme", _
Left(sFeld, iLaenge))
End If
End If
sTxt = sTxt & sFeld & ","
Next iCol
sTxt = Left(sTxt, Len(sTxt) - 1) & Chr(13) & Chr(10)
Print #iFile, sTxt
sTxt = ""
Next iRow
Close iFile
MsgBox "Die Daten wurden in eine Textdatei eingelesen!"
End
Sub