abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 

VBSript-Tool für Übernahme PayPal-Bank in Rewe Banken

107
letzte Antwort am 27.07.2021 17:33:24 von vogtsburger
Dieser Beitrag ist geschlossen
0 Personen hatten auch diese Frage
tdw
Einsteiger
Offline Online
Nachricht 31 von 108
542 Mal angesehen

Hallo Herr Martens,

vielen Dank für die schnelle Antwort.

Mein Zeitraum ist zwar 29.05. bis 31.12.16 aber prinzipiell haben Sie das Problem richtig verstanden.

1. In der Ursprungsdatei sind 43 Vorgänge plus USD Vorgänge.

2. In der Banken.csv sind anschließend 43 Vorgänge plus die Gebühren, also 44 Vorgänge.

mkolberg​ Daran habe ich auch gedacht, aber auch nach der Anpassung des Datums und der Sortierung nach Datum bleibt es bei dem Ergebnis. Könnte es daran liegen, dass die Daten bereits eingelesen wurden? Kann man bei "Buchungsvorschläge verarbeiten" etwas ändern, damit er eine Neue Datei einliest und nicht nur eine "Wiederholung im angegebenen Zeitraum" durchführt?

0 Kudos
Gelöschter Nutzer
Offline Online
Nachricht 32 von 108
542 Mal angesehen

Dann ist die Banken.csv in der Tat alles richtig. Die USD-Vorgänge werden nicht berücksichtigt, soweit so gut. Und in Zeile 44 werden die kumulierten PayPal-Gebühren ausgewiesen.

Es werden IMO immer nur die neuen Bankbewegungen importiert. Die Frage ist aber, warum aber beim ersten Mal nicht alle eingelesen wurden. Deshalb vermute ich, dass Herr Kolberg insofern recht hat, als dass es an der Sortierung liegt.

Testen können Sie es, wenn Sie einmal die gesamten Bankdaten über das Rewe-Modul 'Auswertungen -> Bankdaten' löschen und den gesamten Vorgang noch einmal wiederholen. Dabei sollte der Mandant aber geschlossen sein und die exportierte Banken.csv einmal manuell sortieren. Dann den Mandanten öffnen und sehen, ob jetzt auch alle Bewegungen importiert werden.

Gruß A. Martens

tdw
Einsteiger
Offline Online
Nachricht 33 von 108
540 Mal angesehen

Super, das hat funktioniert.

Also müsste bei einem "Jahreskontoauszug" von Paypal noch eine Sortierung nach Datum erfolgen um die richtigen und vollständigen Werte angezeigt zu bekommen.

Vielen Dank für die schnelle Hilfe!

Beste Grüße


tdw

0 Kudos
Gelöschter Nutzer
Offline Online
Nachricht 34 von 108
539 Mal angesehen

Danke für die Info.

Ich glaube der Fall ist so selten, dass es sich nicht lohnen würde, die Sortierung über das Skript durchzuführen, da ggf. damit andere Probleme entstehen können. Man muss halt diesen Zwischenschritt (Sortierung) dann halt manuell machen.

Gruß A. Martens

mkolberg
Meister
Offline Online
Nachricht 35 von 108
539 Mal angesehen

Wegen eines verkehrten Datums (Ausführungsdatum kleiner Buchungsdatum) hatte ich mir einmal "den Wolf" gesucht, da der Import ohne jede Meldung an dieser Stelle abbrach.

0 Kudos
Gelöschter Nutzer
Offline Online
Nachricht 36 von 108
539 Mal angesehen

Ich werde das mit dem Skript dann doch wohl einmal prüfen.

Ich komme nur im Augenblick nicht dazu. Sobald ich eine Lösung habe, melde ich mich dan wieder.

Gruß A. Martens

0 Kudos
Gelöschter Nutzer
Offline Online
Nachricht 37 von 108
539 Mal angesehen

Hallo Leute,

ich habe das PayPal-VBScript noch einmal mit einer Sortierroutine versehen.

Damit sollte es jetzt klappen. (Pfade bitte anpassen: \\server01\home\66\...)

'###################################

'#                                                                  #

'#            PayPal2DATEV                             #

'#                                                                   #

'###################################

Option Explicit

Dim objFSO

Set objFSO = CreateObject("Scripting.FileSystemObject")

If objFSO.FileExists("\\server01\home\66\Documents\DATEV\DATEN\RWDAT\Export\Banken.csv") Then

objFSO.DeleteFile("\\server01\home\66\Documents\DATEV\DATEN\RWDAT\Export\Banken.csv")

End If

On Error Resume Next

'############### Step 1 -> CSV in ANSI konvertieren

Private Const adReadAll = -1

Private Const adSaveCreateOverWrite = 2

Private Const adTypeBinary = 1

Private Const adTypeText = 2

Private Const adWriteChar = 0

UTF8toANSI WScript.Arguments(0), WScript.Arguments(0)

'############### Step 2 -> Über Excel in Spalten konvertieren

Dim objExcel

Dim objWkb

Dim objWks

Set objExcel = GetObject(,"Excel.Application")

If err.number<>0  Then

Err.Clear

Set objExcel = CreateObject("Excel.Application")

objExcel.Workbooks.Add

End if

Set objWks = objExcel.Workbooks(1).Sheets(1)

objExcel.Visible = True

Dim objReadFile

Set objReadFile =objFSO.OpenTextFile(WScript.Arguments(0),  1)

Dim colBank(34) 'Spaltendefinition siehe DATEV-Schnittstelle (Feld 1 - 34)

Dim curGeb

Dim sTemp

Dim MyResult

Dim i, lCol, lRow

Do Until objReadFile.AtEndOfStream

    sTemp=objReadFile.Readline

    sTemp = Replace (sTemp,""",""",";")

    sTemp = Replace (sTemp,"""","")

    MyResult = Split(sTemp,";")

    lRow=lRow+1   

    For i = 0 To UBound(MyResult)-1

        lCol=i+1

       

        Select Case lCol

            Case 6,7,8,9,15,16

            'WScript.Echo MyResult(i)

            If IsNumeric(MyResult(i))=False Then

                objWks.cells(lRow,lCol).Value=MyResult(i)

            Else

                objWks.cells(lRow,lCol).Value=CCur(MyResult(i))

            End If   

            Case Else               

                objWks.cells(lRow,lCol).Value=MyResult(i)

        End Select

    Next

Loop

objWks.columns("J:J").Insert, -4152

Const sQuote = """"

With objWks  'Spaltenüberschriften der neuen Excel-Datei

    .cells(lRow,1).value="BelegDatum"

    .cells(lRow,6).value="Betrag"

    .cells(lRow,10).value="Buchungstext"

End With       

Dim MyFile

Set MyFile = objFSO.OpenTextFile("\\server01\home\66\Documents\DATEV\DATEN\RWDAT\Export\Banken.csv", 2, True)

Const xlCellTypeLastCell=11

lRow=objWks.usedrange.specialcells(xlCellTypeLastCell).row

lCol=objWks.usedrange.specialcells(xlCellTypeLastCell).Column

Dim sBereich  'Sortierung neu

sBereich= GetExcelCol(1,false) & 1 & ":" & GetExcelCol(lCol,False) & lRow

objWks.Range(sBereich).Sort objWks.Range("A1"), 1,,,,,,1, 1, 1, 1, , 0

'Sort(Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2, DataOption3)

lRow = 1

For i = 2 To objWks.usedrange.specialcells(xlCellTypeLastCell).row

    lRow=lRow+1

   

  If objWks.cells(lRow,5).value    ="EUR" Then   'nur EUR-Beträge

     If objWks.cells(lRow,13).value<>"" Then   

       objWks.cells(lRow,10).value = objWks.cells(lRow,11).value & " / " & _

                                                        objWks.cells(lRow,13).value

        Else

            objWks.cells(lRow,10).value = objWks.cells(lRow,11).value

        End If       

       

        curGeb = curGeb + CCur(objWks.cells(lRow,7)) 'Summe PayPal-Gebühren

       

    colBank(1) = sQuote & "89999999" & sQuote 'Blz

    colBank(2) = sQuote & "123456" & sQuote 'KtoNr

    colBank(5) = objWks.cells(lRow,1) 'Datum Valuta

    colBank(6) = objWks.cells(lRow,1) 'Buchungsdatum

    colBank(7) = FormatNumber(objWks.cells(lRow,6),2) 'Umsatz

    colBank(8) = objWks.cells(lRow,13) 'Auftraggebername 1

    colBank(12) = objWks.cells(lRow,11) 'Verwendungszweck 1(Transaktionscode)

    colBank(13)   = objWks.cells(lRow,12) 'Verwendungszweck 2 (EMail)

    colBank(29) = FormatNumber(objWks.cells(lRow,7),2) 'Gebühren

       

        sTemp=""

   

        For lCol=1 To UBound(colBank)

        sTemp = sTemp & colBank(lCol) & ";"

        Next

       

        sTemp = Left(sTemp,Len(sTemp)-1) 'letztes Semikolon löschen (überschüssig)

       

        MyFile.Writeline sTemp

    End If           

Next

'zuletzt noch als letzte Bankbewegung die summierten PayPal-Gebühren

sTemp=""

sTemp = sTemp & sQuote & "89999999" & sQuote & ";" 'Blz

sTemp = sTemp & sQuote & "123456" & sQuote & ";" 'KtoNr

sTemp = sTemp & ";" 'Auszug

sTemp = sTemp & ";" 'Datum Auszug

sTemp = sTemp & DateSerial(Year(objWks.cells(lRow,1)),Month(objWks.cells(lRow,1))+1,0) & ";" 'Datum Valuta

sTemp = sTemp & DateSerial(Year(objWks.cells(lRow,1)),Month(objWks.cells(lRow,1))+1,0) & ";" 'Datum Buchung

sTemp = sTemp & FormatNumber(curGeb,2) & ";" 'Umsatz

sTemp = sTemp & "PayPal" & ";" 'Auftraggebername 1

sTemp = sTemp & "" & ";" 'Auftraggebername 2

sTemp = sTemp & "" & ";" 'BLZ Auftraggeber

sTemp = sTemp & "" & ";" 'Kto Auftraggeber

sTemp = sTemp & "PayPal-Gebühren" & ";" 'Verwendungszweck 1

sTemp = sTemp & "" & ";" 'Verwendungszweck 2

MyFile.Writeline sTemp

MyFile.Close

MsgBox  "PayPal-Buchungen können jetzt importiert werden.",,"Export PayPal"

Private Sub UTF8toANSI(ByVal UTF8FName, ByVal ANSIFName)

Dim strText

With CreateObject("ADODB.Stream")

    .Open

    .Type = adTypeBinary

    .LoadFromFile UTF8FName

    .Type = adTypeText

    .Charset = "utf-8"

    strText = .ReadText()

    .Position = 0

    .SetEOS

    .Charset = "x-ansi"        'Use current ANSI codepage.

    .WriteText strText, adWriteChar

    .SaveToFile ANSIFName, adSaveCreateOverWrite

    .Close

End With

End Sub

' bInitialCall gibt an, ob die Zählung bei 0 (False)

' oder bei 1 erfolgen soll (bInitialCall = True)

' GetExcelCol(1,False) => A

Public Function GetExcelCol(lIdx, bInitialCall)

     If (bInitialCall) Then lIdx = lIdx + 1

     If (lIdx = 0) Then Exit Function

    GetExcelCol = GetExcelCol((lIdx - 1) \ 26, False) + Chr(65 + (lIdx - 1) Mod 26)

End Function

'WScript.Echo GetIndexOfExcelCol("AX", 0,False)

Public Function GetIndexOfExcelCol(ByVal strCol, ByVal slevel, ByVal bInitialCall)

   Dim tInitialCall   

   If (CInt(slevel) = Len(strCol)) Then Exit Function

     

   If CBool(bInitialCall)    = True Then

               tInitialCall=-1

       Else

               tInitialCall=0

   End if

   GetIndexOfExcelCol = GetIndexOfExcelCol(strCol,CInt(slevel) + 1, False) + _
                ((Asc(Mid(strCol, Len(strCol) - CInt(slevel), 1)) - 65) + 1) * _
                26 ^ CInt(slevel) + CLng(tInitialCall)
End Function

Sollten sich in der neuen Version Fehler eingeschlichen haben, dann bitte melden.

Gruß A. Martens

P.S.

Wie immer gilt:

Ich übernehme keine Verantwortung für irgendwelche Schäden. Das Tool ist von mir getestet und es traten bei mir keine Probleme auf. Anspruch auf Support besteht nicht. Bin aber gerne bereit zu helfen.

Gelöschter Nutzer
Offline Online
Nachricht 38 von 108
539 Mal angesehen

Guten Morgen,

ich habe es auch gerade eingesetzt. Musste noch ein wenig rumexperimentieren, aber es hat super geklappt.


Vielen herzlichen Dank für das Tool und die ganze Vorarbeit, natürlich an alle die mit gemacht haben!

0 Kudos
Gelöschter Nutzer
Offline Online
Nachricht 39 von 108
539 Mal angesehen

Hallo Zusammen,

ich habe noch versucht die Beschreibung in den Verwendungszweck zu bekommen. Da wir bei unserem Mandanten auch Einkäufe über das PayPal Konto abwickeln. Hat leider nicht geklappt. Kann mir hier jemand helfen?

Wie ist das eigentlich mit den Umsatzsteuerangaben? Die liefert PayPal nicht mit oder habe ich das falsch?

Viele Grüße und vielen Dank vorab!

0 Kudos
Gelöschter Nutzer
Offline Online
Nachricht 40 von 108
538 Mal angesehen

Bitte beachten Sie, dass der Verwendungszweck max. 27 Zeichen aufnehmen kann.

Laut Schnittstellenbeschreibung kennt DATEV 4 Verwendungszwecke.

Diese können Sie in der colBank(12) - colBank(15) verwenden. In dem PayPal-Tool verwende ich nur die Verwendungszwecke 1+2 (colBank(12) + colBank(13). Sie haben also noch genügend Platz um weitere Informationen aufzunehmen.

Ergänzen Sie einfach das VBScript wie folgt:

colBank(14)   = objWks.cells(lRow,??) 'Verwendungszweck 3

z.B. ?? <> 13 Excel-Spalte (A=1, B=2 [...]  M=13)

oder über die Hilfsformel:  GetIndexOfExcelCol("M", 0,False)

colBank(14) = objWks.cells(lRow,GetIndexOfExcelCol("M", 0,False)) 'VZ 3

Gruß A. Martens

hilverkus
Beginner
Offline Online
Nachricht 41 von 108
538 Mal angesehen

Guten Tag,

ich bin Mitarbeiter der INS Systems GmbH. Wir sind angehender Datev-Systempartner. Wir haben in Sachen PayPal sehr gute Erfahrungen mit unserem Partner HeeroSoft gemacht. HeeroSoft hat seit Jahren eine gut funktionierende Schnittstelle für Paypal im Einsatz, die auch ständig gepflegt wird. Vlt. wäre das eine Alternative.

VG Frank Hilverkus

INS Systems GmbH

0 Kudos
Gelöschter Nutzer
Offline Online
Nachricht 42 von 108
539 Mal angesehen

Nachtrag Verwendungszweck:

In einem anderen Fall bekomme ich von einem Mandanten einmal im Jahr einen Export der Bankdaten aus S-Firm. Hier hatte ich das Problem mit dem Buchungstext bei Bankgebühren gehabt, die ja extrem lange sein können.

Bei extrem langen Buchungstexte kann man diese auf die 4 Verwendungszwecke wie folgt verteilen:

Dim sVerwendungszweck(3)

sVerwendungszweck(0)=left(sTemp,27) 'max. 27 Stellen (z.B. KtoGeb.)
sVerwendungszweck(1)=Mid(sTemp, 28,27)'max. 27 Stellen
sVerwendungszweck(2)=Mid(sTemp, 55,27)'max. 27 Stellen
sVerwendungszweck(3)=Mid(sTemp, 82,27)'max. 27 Stellen
            
colBank(12)=sVerwendungszweck(0)
colBank(13)=sVerwendungszweck(1)
colBank(14)=sVerwendungszweck(2)
colBank(15)=sVerwendungszweck(3)

Gruß A. Martens

0 Kudos
heikowiedenfeld
Beginner
Offline Online
Nachricht 43 von 108
539 Mal angesehen

Vielleicht bin ich einfach nur blind oder ich verstehe da was nicht. Aber woher bekomme ich die Banken.csv?

Ansonsten scheint alles zu funktionieren bei mir

0 Kudos
Gelöschter Nutzer
Offline Online
Nachricht 44 von 108
539 Mal angesehen

Die Pfade in dem VBSript sind an die eigenen Gegebenheiten anzupassen.

z. B. hier:

Dim MyFile

Set MyFile = objFSO.OpenTextFile("\\server01\home\66\Documents\DATEV\DATEN\RWDAT\Export\Banken.csv", 2, True)

Gruß A. Martens

0 Kudos
heikowiedenfeld
Beginner
Offline Online
Nachricht 45 von 108
538 Mal angesehen

Danke für die schnelle Antwort. Jetzt hat das geklappt.

Jetzt habe ich aber das gleiche Problem wie Herr Mischlich hatte. Es sind in der Banken.csv keine Daten. Nur in der Excel-Datei.

Die CSV-Datei habe ich selber von Paypal runtergeladen. Habe sie vorher nicht als Excel-Datei geöffnet und gespeichert.

Auch ist bei Paypal ein Geschäftskonto eingerichtet.

Was könnte hier noch für ein Problem vorliegen?

0 Kudos
w_paul
Erfahrener
Offline Online
Nachricht 46 von 108
538 Mal angesehen

Bei mir öffnet sich die Datei in Excel

Die letzte Zeile:

BelegDatum 18:21:40  MEZ Bankkonto (Lastschrift) Einzahlung ...

Es scheint, dass das tatsächliche mit dem Wort BelegDatum überschrieben worden ist.

In der Spalte mit Abschlossen steht das Wort Betrag.

In der Spalte nach dem tatsächlichen Betrag (leere Spalte) steht das Wort Buchungstext.

und in banken.csv steht der Text

89999999 123456 0 paypal

Wie kann der Export tatsächlich in banken.csv gespeichert werden?

Oder welcher Teil im Code könnte bei mir falsch sein?

0 Kudos
Gelöschter Nutzer
Offline Online
Nachricht 47 von 108
538 Mal angesehen

[Zitat von Herr Kolberg]

Der Screenshot ist identisch mit hier funktionierenden Daten.

Es gibt zwei denkbare Möglichkeiten:

  1. Der Mandant hat die Datei nicht mittels "speichern unter", gespeichert, sondern mit seinem Excel geöffnet und aus Excel heraus gespeichert -> Datei ist defekt.
  2. Das Script setzt einen Firmen. Account von PayPal voraus. (Das läßt sich kostenlos und ohne erkennbare Nebenwirkungen aktivieren)

PS. Superdankeschön für das Script

                         

Geändert am 22.06.17 um 08:15 Uhr                         

Ich habe hier genau das gleiche Problem. Bin aber einfach noch nicht dazu gekommen, mich darum zu kümmern, warum und wie man diesen Fehler beheben kann.

Einfach noch mal versuchen und den Hinweis von Herrn Kolberg beachten und die beiden Hinweise beachten.

Gruß A. Martens

0 Kudos
w_paul
Erfahrener
Offline Online
Nachricht 48 von 108
539 Mal angesehen

Okay. Ich habe es mit meinem eigenen Account versucht. Vielleicht liegt es tatsächlich am Firmenaccount. Demnächst bekomme ich eine Datei von einem Mandanten, dann teste ich das Script nochmal.

0 Kudos
Gelöschter Nutzer
Offline Online
Nachricht 49 von 108
537 Mal angesehen

Hallo Leute,

in der letzten Version vom PayPal hatte sich ein kleiner Fehler eingeschlichen.

Hier nun die bereinigte und verbesserte (endgültige ?) Version:

a) folgender Fehler wurde behoben:

Zum Ende der Banken-Datei wurde in den Bewegungsdaten leider Kopfzeilenwerte eingetragen, da ein Zähler nicht zurücksetzt wurde.

objWks.columns("J:J").Insert, -4152

lRow=1

Const sQuote = """"

b) folgende Verbesserung/Änderungen wurden aufgenommen:

1. Die PayPal-Spalte 'Währungskennzeichen' wird jetzt dynamisch ermittelt. Das war wohl auch der Fehler, warum bei einigen die Konvertierung erfolgte, aber kein Bankexport.

Dim lColWKZ

Do While lColWKZ = 0

    i=i+1

    If objWks.cells(lRow,i).Value="Währung" Then

        lColWKZ = i

    End If        

Loop

2. Der Exportpfad ist nur noch einmal im Kopf anzupassen. Damit wird die Pflege einfacher. 🙂

Option Explicit

Dim objFSO

Dim sPathExport

sPathExport="C:\Users\ama\Documents\Tools"

3. Bei PayPal sind anscheinend die Spaltendefinitionen nicht immer einheitlich. Deshalb kam es ja auch zu Problemen mit dem Währungskennzeichen. Bitte beachtet das und passt ggf. die Verwendungszwecke selber noch einmal an. Dazu muss man lediglich das Tool laufen lassen und am Ende die gewünschten Textspalten aus der Excel-Datei auslesen und im Code übernehmen.

Eine weitere PP-Spalte könnte auch noch interessant für den Verwendungszweck sein, nämlich die Spalte 'Beschreibung'. Diese wurde jetzt auch mit aufgenommen.

colBank(14) = Left(objWks.cells(lRow,4),27)       'VWZ 3 (PayPal Beschreibung)

(Beispielhaft mit der 27-Zeichen Limitierung)

Hier nun das neue Script:

(Zeilenumbrüche bitte ggf. selber berichtigen, da das DATEV-Forum nicht in der Lage ist, vernünftigen Text zu schreiben)

'###################################
'#                                 #
'#            PayPal2DATEV         #
'#             (V. 2.0)            #
'###################################

OptionExplicit

Dim objFSO
Dim sPathExport
sPathExport="C:\Users\ama\Documents\Tools"

Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(sPathExport & "\Banken.csv") Then
    objFSO.DeleteFile(sPathExport & "\Banken.csv")
EndIf

OnErrorResumeNext

'############### Step 1 -> CSV in ANSI konvertieren


PrivateConst adReadAll = -1
PrivateConst adSaveCreateOverWrite = 2
PrivateConst adTypeBinary = 1
PrivateConst adTypeText = 2
PrivateConst adWriteChar = 0

UTF8toANSI WScript.Arguments(0), WScript.Arguments(0)


'############### Step 2 -> Über Excel in Spalten konvertieren

Dim objExcel
Dim objWkb
Dim objWks

Set objExcel = GetObject(,"Excel.Application")

If err.number<>0  Then
    Err.Clear

    Set objExcel = CreateObject("Excel.Application")
    objExcel.Workbooks.Add
Endif


Set objWks = objExcel.Workbooks(1).Sheets(1)
objExcel.Visible = True

Dim objReadFile
Set objReadFile =objFSO.OpenTextFile(WScript.Arguments(0),  1)

Dim colBank(34) 'Spaltendefinition siehe DATEV-Schnittstelle (Feld 1 - 34)
Dim curGeb
Dim sTemp
Dim MyResult
Dim i, lCol, lRow

DoUntil objReadFile.AtEndOfStream
    sTemp=objReadFile.Readline
    sTemp = Replace (sTemp,""",""",";")
    sTemp = Replace (sTemp,"""","")
    MyResult = Split(sTemp,";")
    lRow=lRow+1    

    For i = 0ToUBound(MyResult)-1
        lCol=i+1
      
        SelectCase lCol
            Case6,7,8,9,15,16

            IfIsNumeric(MyResult(i))=FalseThen
                objWks.cells(lRow,lCol).Value=MyResult(i)
            Else
                objWks.cells(lRow,lCol).Value=CCur(MyResult(i))
            EndIf    

            CaseElse                

                objWks.cells(lRow,lCol).Value=MyResult(i)
        EndSelect
    Next
Loop

objWks.columns("J:J").Insert, -4152

lRow=1
Const sQuote = """"

With objWks  'Spaltenüberschriften der neuen Excel-Datei
    .cells(lRow,1).value="BelegDatum"
    .cells(lRow,6).value="Betrag"
    .cells(lRow,10).value="Buchungstext"
EndWith        

Dim MyFile
Set MyFile = objFSO.OpenTextFile(sPathExport & "\Banken.csv", 2, True) 

Const xlCellTypeLastCell=11

lRow=objWks.usedrange.specialcells(xlCellTypeLastCell).row
lCol=objWks.usedrange.specialcells(xlCellTypeLastCell).Column

Dim sBereich  'Sortierung neu
sBereich= GetExcelCol(1,false) & 1 & ":" & GetExcelCol(lCol,False) & lRow
objWks.Range(sBereich).Sort objWks.Range("A1"), 1,,,,,,1, 1, 1, 1, , 0

lRow = 1

Dim lColWKZ     'Währungskennzeichen
DoWhile lColWKZ = 0
    i=i+1
    If objWks.cells(lRow,i).Value="Währung"Then
        lColWKZ = i
    EndIf        
Loop


For i = 2To objWks.usedrange.specialcells(xlCellTypeLastCell).row
    lRow=lRow+1
    
  If objWks.cells(lRow,lColWKZ).value="EUR"Then   'nur EUR-Beträge
     If objWks.cells(lRow,13).value<>""Then    
       objWks.cells(lRow,10).value = objWks.cells(lRow,11).value & " / " & _
                                               objWks.cells(lRow,13).value
        Else
            objWks.cells(lRow,10).value = objWks.cells(lRow,11).value
        EndIf        
       

  curGeb = curGeb + CCur(objWks.cells(lRow,7)) 'Summe PayPal-Gebühren   
  colBank(1) = sQuote & "89999999" & sQuote'Blz
  colBank(2) = sQuote & "123456" & sQuote'KtoNr
  colBank(5) = objWks.cells(lRow,1) 'Datum Valuta
  colBank(6) = objWks.cells(lRow,1) 'Buchungsdatum
  colBank(7) = FormatNumber(objWks.cells(lRow,6),2) 'Umsatz
  colBank(8) = objWks.cells(lRow,13) 'Auftraggebername 1
   colBank(12) = objWks.cells(lRow,11) 'Verwendungszweck 1(Transaktionscode)
  colBank(13)   = objWks.cells(lRow,12) 'Verwendungszweck 2 (EMail)
  colBank(14)   = objWks.cells(lRow,3) 'Verwendungszweck 3 (Beschreibung)
  colBank(29) = FormatNumber(objWks.cells(lRow,7),2) 'Gebühren
  
        sTemp=""

        For lCol=1ToUBound(colBank)
            sTemp = sTemp & colBank(lCol) & ";"
        Next
       
        sTemp = Left(sTemp,Len(sTemp)-1) 'letztes Semikolon löschen
      
        MyFile.Writeline sTemp
    EndIf            
Next

'zuletzt noch als letzte Bankbewegung die summierten PayPal-Gebühren
sTemp=""

sTemp = sTemp & sQuote & "89999999" & sQuote & ";"'Blz
sTemp = sTemp & sQuote & "123456" & sQuote & ";"'KtoNr
sTemp = sTemp & ";"'Auszug
sTemp = sTemp & ";"'Datum Auszug
sTemp = sTemp & DateSerial(Year(objWks.cells(lRow,1)),Month(objWks.cells(lRow,1))+1,0) & ";"'Datum Valuta 
sTemp = sTemp & DateSerial(Year(objWks.cells(lRow,1)),Month(objWks.cells(lRow,1))+1,0) & ";"'Datum Buchung
sTemp = sTemp & FormatNumber(curGeb,2) & ";"'Umsatz
sTemp = sTemp & "PayPal" & ";"'Auftraggebername 1
sTemp = sTemp & "" & ";"'Auftraggebername 2
sTemp = sTemp & "" & ";"'BLZ Auftraggeber
sTemp = sTemp & "" & ";"'Kto Auftraggeber
sTemp = sTemp & "PayPal-Gebühren" & ";"'Verwendungszweck 1
sTemp = sTemp & "" & ";"'Verwendungszweck 2

MyFile.Writeline sTemp
MyFile.Close

MsgBox  "PayPal-Buchungen können jetzt importiert werden.",,"Export PayPal"

PrivateSub UTF8toANSI(ByVal UTF8FName, ByVal ANSIFName)
Dim strText

WithCreateObject("ADODB.Stream")
    .Open
    .Type = adTypeBinary
    .LoadFromFile UTF8FName
    .Type = adTypeText
    .Charset = "utf-8"
    strText = .ReadText()
    .Position = 0
    .SetEOS
    .Charset = "x-ansi"        'Use current ANSI codepage.
    .WriteText strText, adWriteChar
    .SaveToFile ANSIFName, adSaveCreateOverWrite
    .Close
EndWith

EndSub


' bInitialCall gibt an, ob die Zählung bei 0 (False) 
' oder bei 1 erfolgen soll (bInitialCall = True)
' GetExcelCol(1,False) => A

PublicFunction GetExcelCol(lIdx, bInitialCall)
     If (bInitialCall) Then lIdx = lIdx + 1
     If (lIdx = 0) ThenExitFunction
    GetExcelCol = GetExcelCol((lIdx - 1) \ 26, False) + Chr(65 + (lIdx - 1) Mod26)
EndFunction

'WScript.Echo GetIndexOfExcelCol("AX", 0,False)
PublicFunction GetIndexOfExcelCol(ByVal strCol, ByVal slevel, ByVal bInitialCall)

   Dim tInitialCall    
   If (CInt(slevel) = Len(strCol)) ThenExitFunction
   IfCBool(bInitialCall)    = TrueThen
               tInitialCall=-1
       Else
               tInitialCall=0
   Endif
   GetIndexOfExcelCol = GetIndexOfExcelCol(strCol,CInt(slevel) + 1, False) + _
                ((Asc(Mid(strCol, Len(strCol) - CInt(slevel), 1)) - 65) + 1) * _
                26 ^ CInt(slevel) + CLng(tInitialCall)
EndFunction

0 Kudos
willimüller
Fachmann
Offline Online
Nachricht 50 von 108
538 Mal angesehen

Als Neuerung hat die Datev mit der DVD 12.0 geplant:

Mit der neuen PayPal-Schnittstelle und entsprechenden Verarbeitungsmechanismen im
Rechnungswesen bieten wir eine deutlich erhöhte Datenqualität zur bisherigen
Schnittstelle. Im Rechnungswesen wurde das elektronische Bankbuchen so
erweitert, dass nun ein PayPal-Konto analog einem Bankkonto angelegt werden
kann und über die Mechanismen des elektronischen Bankbuchens die Umsätze des
PayPal-Kontos nun effizient und automatisiert verarbeitet werden können. Die
Verknüpfung von Rechnung und Zahlung findet über die Order-ID im Feld
Auftragsnummer statt.

Was halten Sie davon?

Schöne Grüße

Willi Müller

0 Kudos
Gelöschter Nutzer
Offline Online
Nachricht 51 von 108
534 Mal angesehen

Erstens bin ich immer Skeptisch, wenn DATEV etwas verbessert.

Außerdem, mit meinem Tool habe ich ja schon eine Bankendatei und dennoch ist noch viel Handarbeit nötig, da es DATEV bis heute das Belegefeld2 nicht berücksichtigt.

Es nützt einem also gar nichts, wenn ich bei der Einbuchung der Ausgangsrechnung keine vernünftige Belegnummern erfassen kann. Ich muss mich immer für eine Variante entscheiden, also

a) Belegfeld1 = Rechnungsnummer oder

b) Belegeld1 = Order-ID

Belegefeld2 ist ja für die Fälligkeiten vergewaltigt worden.

[An DATEV]

WANN BEGREIFT IHR ENDLICH, DASS DAS BELEGFELD2 NICHT FÜR ABWEICHENDE FÄLLIGKEITEN ZU VERWENDEN IST, SONDERN FÜR EINEN ZWEITE BELEGNUMMER!]

Und zum anderen, bin ich nicht bereit, für diese Schnittstelle auch noch Geld zu bezahlen. Denn vermutlich lässt sich DATEV das teuer bezahlen. Umsonst machen die nämlich gar nichts.

Sollten sich das Tool bei den anderen aber wirklich bewähren, dann kann ich ja umschwenken. Aber bis dahin, bin ich lieber Herr im eigenen Hause und möchte mich nicht abhängig von anderen machen.

Gruß A. Martens

aschreiber
Fachmann
Offline Online
Nachricht 52 von 108
537 Mal angesehen

Hallo Herr Martens,

bei der DATEV-Lösung muss das Buchen mit Anzahlungen aktiviert werden. Der Ausgleich erfolgt dann über die Auftragsnummer (=Transaktionscode von PayPal).

Freundliche Grüße

Alexander Schreiber

Freundliche Grüße
Alexander Schreiber
0 Kudos
Offline Online
Nachricht 53 von 108
538 Mal angesehen

ich will ja nicht immer meckern, aber

Belegefeld2 ist ja für die Fälligkeiten vergewaltigt worden.

muss echt nicht sein...

0 Kudos
Gelöschter Nutzer
Offline Online
Nachricht 54 von 108
538 Mal angesehen

Der Transaktionscode ist doch etwas ganz anderes und wird von PayPal generiert. Was soll mir das bei den Ausgangsrechnungen helfen?

Ich habe einem Mandanten im Internethandel und da wird meistens vorschüßig gezahlt.

Sobald die Kunden eine Bestellung abschließen, zahlen diese auf eine Order-ID. Ist das Geld eingegangen, erhalten die Kunden eine Rechnung mit ordentlicher Rechnungsnummer.

In meiner Buchhaltung stehe ich jetzt also vor der Gretchenfrage:

Nehme ich im Belegfeld1 die Rechnungsnummer oder die Order-ID. DATEV vergleicht nur den Buchungstext mit dem Belegfeld1, ich würde aber beide Nummern benötigen!

Das Problem würde sich nicht stellen, wenn DATEV das Belegfeld2 freigeben würde und es nicht zweckentfremden (vergewaltigen*). Das Belegfeld2 ist wie Belegfeld1 eine Belegnummer und auch als solche zu gebrauchen. Nur DATEV hat es seit DOS-Zeiten nicht hinbekommen, dass man für eine abweichende Fälligkeit auch ein eigenes Feld zu verwenden hat. Das Feld Belegfeld2 heißt eben nicht "Abweichende Fälligkeit" und daher erwarte ich von so einem Softwarehaus auch eine vernünftige Software. Und dieser Mißstand wird leider immer nerviger. DATEV hat jetzt mind. 20 Jahre Zeit gehabt endlich einmal die Programme umzurüsten, das sollte nun wirklich ausreichend sein, für die Fälligkeiten ein separates Feld zu spendieren.

Gruß A. Martens

----

* Duden: niederkämpfen, niederringen, unter seine Herrschaft bringen, unterwerfen; (gehoben) niederwerfen, niederzwingen, sich untertan machen

w_paul
Erfahrener
Offline Online
Nachricht 55 von 108
538 Mal angesehen

Ich hab das Script gerade bei meinem eigenen Account probiert. Es wird Excel geöffnet, die Füllung der Zeilen kann mit angesehen werden. Weiter passiert nichts. Nach Schließen der Mappe1 kommt die msgbox. Die banken.csv beinhaltet keine Daten.

Nachtrag:

Jetzt hat es wohl funktioniert.

Entweder muss man lange warten oder es liegt daran, dass ich die banken.csv geöffnet habe (sie war leer) während die Excel-Datei noch offen war. Danach kam die msgbox und die banken.csv war gefüllt.

0 Kudos
Gelöschter Nutzer
Offline Online
Nachricht 56 von 108
540 Mal angesehen

Ja, das Script braucht eine gewisse Zeit und ist nicht das schnellste.

Eventuell werde ich das einmal komplett nach VBNet portieren und eine echten Assistenten für die Spaltenbelegung programmieren.

Auf jeden Fall muss das VBSript in Ruhe seine Sache machen lassen und abwarten bis die Meldung kommt. Man kann ja in der Zwischenzeit ja auch noch weiterarbeiten.

Gruß A. Martens

0 Kudos
w_paul
Erfahrener
Offline Online
Nachricht 57 von 108
540 Mal angesehen

Ich habe das Script gerade ausprobiert.

Bei der Übernahme über Buchungsvorschläge werden nur die letzten 9 von 183 Bewegungen angezeigt. Wobei keine Verarbeitung stattfindet. Die 9 Umsätze sind alle auf 0,00 €.

Die Spalte A ist nicht chronologisch nach das Datum sortiert.

Was könnte mein Problem sein?

0 Kudos
Gelöschter Nutzer
Offline Online
Nachricht 58 von 108
542 Mal angesehen

Also ich habe eben das Tool hier aus dem Forum V. 2.0 getestet und es hat bei mir funktioniert.

Bitte folgendes prüfen:

1. Excel im Hintergrund noch geöffnet?

2. Excel vielleicht vorher öffnen und dann die Konvertierung starten.

3. Pfade angepasst?

4. Das Tool ist nicht das schnellste, das gebe ich zu. Einfach in Ruhe arbeiten lassen.

Es müsste in Excel sichtbar die Konvertierung ablaufen. Als letztes kommt die Meldung, dass PayPal erstellt wurde.

5. Können Sie mir vielleicht eine Testdatei zusenden?

Gruß A. Martens

0 Kudos
w_paul
Erfahrener
Offline Online
Nachricht 59 von 108
542 Mal angesehen

Werde ich morgen mal testen.

Das Tool läuft durch.

Die Msgbox erscheint.

Die banken.csv ist am richtigen Platz und gefüllt.

Excel ist noch offen und wird per Hand ohne zu speichern geschlossen.

Beim importieren über Buchungsvorschläge werden Sätze nicht verarbeitet.

Vielleicht liegt es am Privatkonto also nicht Geschäftskonto.

0 Kudos
Gelöschter Nutzer
Offline Online
Nachricht 60 von 108
542 Mal angesehen

Dann wurden bereits die Bankdaten einmal eingelesen.

DATEV ist so intelligent, dass immer nur neue Bankdaten importiert werden, auch wenn die Bankendatei ältere Daten enthält. Löschen Sie bitte die alten Bankdaten und starten Sie den Mandanten neu. Dann sollten auch die vollständigen Bankdaten importiert werden.

Gruß A. Martens

0 Kudos
107
letzte Antwort am 27.07.2021 17:33:24 von vogtsburger
Dieser Beitrag ist geschlossen
0 Personen hatten auch diese Frage