Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
300to304
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
300to304
300to304
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zeilenschaltung für txt-Datei

Zeilenschaltung für txt-Datei
01.09.2003 18:53:23
Jürgen
Hallo,

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

                    

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilenschaltung für txt-Datei
01.09.2003 20:14:32
Ramses
Hallo,

kannst du das nochmal prüfen ob beide Zeichen vorhanden sein müssen ?
Das kann, eigentlich, nicht sein.

10 ist ein Rücklauf, bzw. ein "weicher" Absatz, d.h. es wird kein wirklich neuer Absatz erstellt, sondern einfach in einer neuen Zeile wieder begonnen >> Neue Zeile bei Dir.

13 ist ein "harter" Absatz und es wird nochmals eine neue Zeile mit neuer Absatzformatierung erstellt. >> Zusätzliche Zeile.

Eigentlich orientieren sich die Importprogramme an CHR(13) um Datensätze zu unterscheiden.

Gruss Rainere
Fehler beim Satzaufbau
01.09.2003 21:31:31
Jürgen
Hallo Rainer,

danke für Deinen Hinweis, aber die Versuche mit Chr(13) bzw. Chr(10) -jeweils allein- hatte ich schon probiert.
Die Fremd-Software meckert dann an:
Fehler beim Satzaufbau. Import abgebrochen.

Weiß nicht, woran es liegt. Das Handbuch jedenfalls spricht von Chr(13) und(!) Chr(10).

Vielleicht noch eine andere Idee?

Jedenfalls schon einmal ein "Dankeschön" an Dich.

Noch einen schönen Abend.

Gruß
Jürgen
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige