Microsoft Excel

Herbers Excel/VBA-Archiv

TXT Import mit Semikolon


Betrifft: TXT Import mit Semikolon von: Malte
Geschrieben am: 03.04.2018 11:11:51

Hallo Forum!

Ich habe folgendes Problem:
Ich bekomme von meinem Buchführer die Buchführungsdaten als .txt-Datei.
Die einzelnen Werte sind wie folgt mit Semikolon getrennt:

#Datum;#Buchungstext;#Konto;#Gegenkonto;#BetragSOLL;#BetragHaben

An sich also relativ simpel umzusetzen.
Mein Problem ist aber, dass der Buchführer bei manchen Buchungssätzen die Menge mit Semikolon abtrennt. Also z.B.:
Streusalz; 25 kg

Dieses zusätzliche Semikolon soll aber beim Iport nicht mit berücksichtigt werden und als Text ausgegeben werden.

Frage: Gibt es die Möglichkeit pro Datenreihe in der .txt Datei die Semikolon zu zählen?
Wenn 5 Semikolon - nichts unternehmen
Wenn 6 Semikolon - Semikolon 2 als Text behandeln

Ich wäre sehr dankbar wenn ihr eine Idee habt wie soetwas umzusetzen ist.

Gruß Malte

  

Betrifft: AW: TXT Import mit Semikolon von: Oberschlumpf
Geschrieben am: 03.04.2018 11:53:04

Hi Malte,

im einfachsten Fall vielleicht so:

Sub sbImport()

    Dim lstrImp as String, liLen As Integer, liSem As Integer

    Open "Pfad\Datei.txt" For Input As #1
        Do Until Eof(1)
            Line Input #1, lstrImp
                For liLen = 1 to Len(lstrImp)
                    If Mid(lstrImp, liLen, 1) = ";" Then
                        liSem = liSem + 1
                    End If
                Next
                If liSem = 5 Then
                        'hier dein Import-Code bei 5 Semikola
                    Else
                        'hier dein Import-Code bei 6 Semikola
                End If
        Loop
    Close
End Sub
Hilfts? Wenn nicht, zeig uns bitte Bsp-Dateien mit Bsp-Daten.

Ciao
Thorsten


  

Betrifft: AW: TXT Import mit Semikolon von: Malte
Geschrieben am: 03.04.2018 12:03:20

Hallo Thorsten,

vielen Dank für die Antwort! Der Code bei 5 Semikolon sieht wie folgt aus:

    Open strFileName For Input As #1
    arrDaten = Split(Input(LOF(1), 1), vbCrLf)
    Close #1
    For lngR = 1 To UBound(arrDaten)
      arrTmp = Split(arrDaten(lngR), cstrDelim)
      If UBound(arrTmp) > -1 Then
        With ActiveSheet
          lngLast = .Cells(Rows.Count, 1).End(xlUp).Row + 1
          lngLast = Application.Max(lngLast, 1)
          .Cells(lngLast, 1).Resize(, UBound(arrTmp) + 1) = Application.Transpose(Application. _
Transpose(arrTmp))
        End With
      End If
    Next lngR

Wie bekomme ich das abgeändert, sodass das zweite Semikolon nicht als Trennzeichen gesehen wird wenn 6 Semikolon in einer Reihe stehen?

Gruß
Malte


  

Betrifft: AW: TXT Import mit Semikolon von: Oberschlumpf
Geschrieben am: 03.04.2018 12:06:35

Hi Malte,

wie schon in meinem letzten Beitrag erwähnt:
Wenn weitere Hilfe benötigt wird, würde ich mich über eine Bsp-Datei freuen, an der man deinen Code anwenden kann.

Ciao
Thorsten


  

Betrifft: AW: TXT Import mit Semikolon von: ChrisL
Geschrieben am: 03.04.2018 12:59:15

Hi

Eine Beispieldatei wäre tatsächlich hilfreich.

Sub t()
Dim varFile As Variant, lngZeile As Long, strTextzeile As String, i As Integer

varFile = Application.GetOpenFilename("CSV-Dateien (*.csv), *.csv")
If varFile = False Then Exit Sub

Open varFile For Input As #1
Do While Not EOF(1) = True
    lngZeile = lngZeile + 1
    Line Input #1, strTextzeile
    
    Cells(lngZeile, 1) = Left(strTextzeile, InStr(1, strTextzeile, ";") - 1)
    strTextzeile = Right(strTextzeile, Len(strTextzeile) - InStr(1, strTextzeile, ";"))
    
    For i = 6 To 3 Step -1
      Cells(lngZeile, i) = Right(strTextzeile, Len(strTextzeile) - InStrRev(strTextzeile, ";"))
      strTextzeile = Left(strTextzeile, InStrRev(strTextzeile, ";") - 1)
    Next i
    
    Cells(lngZeile, 2) = strTextzeile
Loop
Close #1
End Sub
cu
Chris


  

Betrifft: AW: TXT Import mit Semikolon von: Malte
Geschrieben am: 03.04.2018 13:26:42

Danke für die Antwort!

Ich habe die beiden Dateien hochgeladen:

Datei vom Buchführer:
https://www.herber.de/bbs/user/120824.txt

Excel-Datei:
https://www.herber.de/bbs/user/120825.xlsm

Ich hoffe das hilft euch weiter!

Gruß Malte


  

Betrifft: AW: TXT Import mit Semikolon von: ChrisL
Geschrieben am: 03.04.2018 13:41:11

Hi

Der Code von vorher sollte eigentlich funktionieren.

Wenn ich mir die Importdaten ansehe, hast du ein Problem mit Sonderzeichen. Vielleicht sollte man bei den Rohdaten ansetzen und dabei gleich das Trennzeichen anpassen.

cu
Chris


  

Betrifft: AW: TXT Import mit Semikolon von: Malte
Geschrieben am: 03.04.2018 13:47:13

Hi Chris!
Vielen Dank für die Antwort!
Auf die Rohdaten habe ich leider keinen Einfluss, da der Buchführer sie mir nur so zur Verfügung stellen kann. Wie sieht denn der Code in fertiger (zusammengesetzter Form) aus? Ich bekomme immer noch Fehlermeldungen über den Debugger und weiß nicht so recht woran es liegt.

Danke für deine Hilfe!


  

Betrifft: AW: TXT Import mit Semikolon von: ChrisL
Geschrieben am: 03.04.2018 14:05:59

Hi Malte

Der Code sieht genau so aus wie gepostet. CSV noch durch TXT ersetzen und auf eine neue Tabelle anwenden.

Nachträglich kannst du noch ein paar SVERWEISe einfügen, das wusste ich vorher nicht.

Muss ich die Fehlermeldung erraten?
Unter Extras, Verweise, die Checkbox bei alten Verweisen deaktivieren.

cu
Chris


  

Betrifft: AW: TXT Import mit Semikolon von: Malte
Geschrieben am: 03.04.2018 14:09:33

Hi Chris!

Ja hab ich dann auch gesehen! Klappt super! Vielen vielen Dank! Das erspart mir Stunden!

Gruß Malte


Beiträge aus dem Excel-Forum zum Thema "TXT Import mit Semikolon"