Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Zeilenschaltung für txt-Datei

    Betrifft: Zeilenschaltung für txt-Datei von: Jürgen
    Geschrieben am: 01.09.2003 18:53:23

    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 
    
    
    
      


    Betrifft: AW: Zeilenschaltung für txt-Datei von: Ramses
    Geschrieben am: 01.09.2003 20:14:32

    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


      


    Betrifft: Fehler beim Satzaufbau von: Jürgen
    Geschrieben am: 01.09.2003 21:31:31

    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