Thema Datum  Von Nutzer Rating
Antwort
Rot Textdatei auslesen, nach Trennzeichen trennen und den Wert in eine bestimmte Spalte schrei
14.09.2015 18:20:08 Johann
Solved

Ansicht des Beitrags:
Von:
Johann
Datum:
14.09.2015 18:20:08
Views:
879
Rating: Antwort:
 Nein
Thema:
Textdatei auslesen, nach Trennzeichen trennen und den Wert in eine bestimmte Spalte schrei

Hallo liebe Fangemeinde,

nach langem googeln und ausprobieren muss ich mich geschlagen geben. Habe mir ein Macro gegoogelt, etwas angepasst und es funktioniert auch fast wie gewünscht, aber nur fast.

Ich versuche gerade, einen Schnittstellenconverter zu basteln. Das soll wie folgt laufen: Excel-Datei wird geöffnet, der Benutzer wählt die Spalten die in der zu verarbeitenden Datei enthalten sind (gelöst mit 2 Userformen) und öffnet die zu verarbeitende Datei. Dabei sollen die Daten gemäß der Auswahl in die entsprechende Spalte in einem Tabellenblatt abgelegt werden.

Hier ist der Quellcode:

Private Sub BTN_OpenFile_Click()
Dim ff As Long
Dim sFile As String
Dim sLine As String
Dim arr() As String
Dim row As Long
Dim col As Long
Dim activCell As Range
 
ff = FreeFile
sFile = Application.GetOpenFilename("beliebige Datei,*.*")
'datei oeffnen
Open sFile For Input As #ff
 
'erste zelle markieren
Sheets("Voucher").Select
Set activCell = Worksheets("Voucher").Range("A1")
 
'Call activCell.Activate
 
While (Not EOF(ff))
Line Input #ff, sLine 'zeile einlesen
If row >= 1 Then
    arr = Split(sLine, ";") 'an semikolons aufspalten
    
    'relativ zur aktiven zelle den wert setzen
    For col = LBound(arr) To UBound(arr)
        'bestimmt, in welcher Spalte der Wert geschrieben wird
        For feld = 0 To UserForm1.ListBox2.ListCount - 1
            Select Case UserForm1.ListBox2.List(feld)
                Case "Date"
                    spalte = 1
                Case "Voucher-No."
                    spalte = 2
                Case "Invoice-No."
                    spalte = 3
                Case "General Account-No."
                    spalte = 4
                Case "General Account-No. Countermark"
                    spalte = 5
                Case "S/P-Account No."
                    spalte = 6
                Case "S/P-Account No. Countermark"
                    spalte = 7
                Case "Entry Description"
                    spalte = 8
                Case "Maturity Date"
                    spalte = 9
                Case "Quantity"
                    spalte = 10
                Case "Amount"
                    spalte = 11
                Case Else
                    spalte = 28
            End Select
        activCell.Offset(row + 6, spalte - 1).Value = arr(col)
        Next feld
    Next 'i
End If
row = row + 1
Wend
 
'schliessen
Close ff
End Sub
 
 
Das Makro schreibt zwar in die ausgewählten Spalten, allerdings immer den letzten ausgewählten Wert. Wenn man also z.B. die Spalten Date und Voucher-No. auswählt, werden beide Spalten mit Voucher-No. gefüllt. Wie bekommt man das Makro so hin, dass in den jeweiligen Spalten auch die richtigen Werte landen, und nicht nur der letzte?
 
Vielen Dank schon mal im Voraus für die Lösungsvorschläge
 
Viele Grüße
Johann

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Textdatei auslesen, nach Trennzeichen trennen und den Wert in eine bestimmte Spalte schrei
14.09.2015 18:20:08 Johann
Solved