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?
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
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
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
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.
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
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.
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!
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!
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
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
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
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
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
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?
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?
[Zitat von Herr Kolberg]
Der Screenshot ist identisch mit hier funktionierenden Daten.
Es gibt zwei denkbare Möglichkeiten:
- Der Mandant hat die Datei nicht mittels "speichern unter", gespeichert, sondern mit seinem Excel geöffnet und aus Excel heraus gespeichert -> Datei ist defekt.
- 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
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.
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) #
'###################################
Option Explicit
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")
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,16If 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
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"
End With
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
Do While lColWKZ = 0
i=i+1
If objWks.cells(lRow,i).Value="Währung" Then
lColWKZ = i
End If
Loop
For i = 2 To 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
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(14) = objWks.cells(lRow,3) 'Verwendungszweck 3 (Beschreibung)
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
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
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
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
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
ich will ja nicht immer meckern, aber
Belegefeld2 ist ja für die Fälligkeiten vergewaltigt worden.
muss echt nicht sein...
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
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.
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
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?
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
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.
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