ich möchte gerne von der Datei "Buchungsanweisung_Keller_KSt.xls" bestimmte Werte in eine andere Datei einspielen ("Schnittstelle.xls").
Dabei sollte die Schnittstellen - Datei automatisch geöffnet, dass Makro ausgeführt und anschließend die Schnittstellen - Datei gespeichert und geschlossen werden.
Das Makro schaut bislang wie folgt aus:
Option Explicit
Sub ErstellungSchnittstelle()
'Aus einer Eingabemaske heraus sollen die Steuerbuchungen in eine Schnittstellen-
'Datei übertragen werden.
Dim BelDat, Datei As String
Dim BKR, BelA, BuDat, Per, Wah, SKto, BWAS, HKto, BWAH, Zuo, Txt, Nachz, Erst
Dim zeileQ, zeileZ
Dim wkbZ As Workbook, wksZ As Worksheet
'_____________________________________________________________________________________________________
'hier bitte innerhalb der Anführungszeichen die genaue Dateibezeichnung eintragen !!!!!
'Dabei ".xls" nicht vergessen !!
Application.ScreenUpdating = False
Datei = "C:\Users\kellerjo\Desktop\Buchungsbeleg NEU - Test\Schnittstelle.xls"
'______________________________________________________________________________________________________
Set wkbZ = Workbooks.Open(Datei)
'nachfolgende Schleife springt von Zeile zu Zeile und überträgt die Daten,
'wenn ein Betrag eingetragen ist
'diese Schleife durchläuft den oberen Teil des Buchungsbeleges
zeileQ = 12 'erste Zeile mit Buchungen
Do
BKR = ActiveWorkbook.ActiveSheet.Cells(8, 2) 'Buchungskreis
BelDat = ActiveWorkbook.ActiveSheet.Cells(8, 8) 'Belegdatum im Textformat
SKto = ActiveWorkbook.ActiveSheet.Cells(zeileQ, 5) 'Soll-Konto
HKto = ActiveWorkbook.ActiveSheet.Cells(zeileQ, 6) 'Haben-Konto
Nachz = ActiveWorkbook.ActiveSheet.Cells(zeileQ, 3) 'Betrag Nachzahlung
Erst = ActiveWorkbook.ActiveSheet.Cells(zeileQ, 4) 'Betrag Erstattung
Zuo = ActiveWorkbook.ActiveSheet.Cells(zeileQ, 8) 'Zuordnung
Txt = ActiveWorkbook.ActiveSheet.Cells(zeileQ, 2) 'Text
If SKto 1310000000 Then BWAS = ActiveWorkbook.ActiveSheet.Cells( _
_
_
zeileQ, 7) Else BWAS = ""
If HKto 1310000000 Then BWAH = ActiveWorkbook.ActiveSheet.Cells( _
zeileQ, 7) Else BWAH = ""
' eine Bewegungsart - Soll oder Haben - wird nur übernommen, wenn ein Sachkonto zwischen
' dem Wert 1310000000 und 1330000000 angegeben ist (d.h. ein RSt-Konto)
If Nachz + Erst = 0 Then GoTo Ziel1
'wenn überhaupt kein Betrag eingetragen ist, erfolgt keine Übetragung an die SchnStelle
Workbooks("Schnittstelle.xls").Sheets("SchnSt").Activate 'Ansprechen der Schnittstellen- _
_
_
Datei
'nachfolgende Schleife sucht die erste freie Zeile auf dem Blatt Schnittstelle
zeileZ = 1
Do
zeileZ = zeileZ + 1
Loop Until ActiveWorkbook.ActiveSheet.Cells(zeileZ, 2) = ""
'ab hier werden die entsprechenden Werte eingetragen
wksZ.Cells(zeileZ, 2) = BKR
wksZ.Cells(zeileZ, 4) = BelDat
wksZ.Cells(zeileZ, 5) = "TS"
wksZ.Cells(zeileZ, 8) = "EUR"
wksZ.Cells(zeileZ, 9) = SKto
wksZ.Cells(zeileZ, 10) = BWAS
wksZ.Cells(zeileZ, 13) = HKto
wksZ.Cells(zeileZ, 14) = BWAH
wksZ.Cells(zeileZ, 17) = Nachz
If Nachz = 0 Or Nachz = "" And Erst 0 Then _
wksZ.Cells(zeileZ, 17) = Erst
wksZ.Cells(zeileZ, 18) = Zuo
wksZ.Cells(zeileZ, 19) = Txt
Workbooks("Buchungsanweisung_Keller_KSt.xls").Sheets("Beleg").Activate
'die Datei Buchungsanweisung wird wieder angesprochen;
Ziel1:
zeileQ = zeileQ + 1
Loop Until zeileQ > 20
'diese Schleife durchläuft den unteren Teil des Buchungsbeleges
zeileQ = 26 'erste Zeile mit Buchungen
Do
BKR = ActiveWorkbook.ActiveSheet.Cells(8, 2) 'Buchungskreis
BelDat = ActiveWorkbook.ActiveSheet.Cells(8, 8) 'Belegdatum im Textformat
SKto = ActiveWorkbook.ActiveSheet.Cells(zeileQ, 5) 'Soll-Konto
HKto = ActiveWorkbook.ActiveSheet.Cells(zeileQ, 6) 'Haben-Konto
Erst = ActiveWorkbook.ActiveSheet.Cells(zeileQ, 4) 'Betrag Erstattung
Zuo = ActiveWorkbook.ActiveSheet.Cells(zeileQ, 8) 'Zuordnung
Txt = ActiveWorkbook.ActiveSheet.Cells(zeileQ, 2) 'Text
If SKto 1310000000 Then BWAS = ActiveWorkbook.ActiveSheet.Cells( _
_
_
zeileQ, 7) Else BWAS = ""
If HKto 1310000000 Then BWAH = ActiveWorkbook.ActiveSheet.Cells( _
zeileQ, 7) Else BWAH = ""
' eine Bewegungsart - Soll oder Haben - wird nur übernommen, wenn ein Sachkonto zwischen
' dem Wert 1310000000 und 1330000000 angegeben ist (d.h. ein RSt-Konto)
If Nachz + Erst = 0 Then GoTo Ziel2
'wenn überhaupt kein Betrag eingetragen ist, erfolgt keine Übetragung an die SchnStelle
Workbooks("Schnittstelle.xls").Sheets("SchnSt").Activate 'Ansprechen der Schnittstellen- _
_
_
Datei
'nachfolgende Schleife sucht die erste freie Zeile auf dem Blatt Schnittstelle
zeileZ = 1
Do
zeileZ = zeileZ + 1
Loop Until wksZ.Cells(zeileZ, 2) = ""
'ab hier werden die entsprechenden Werte eingetragen
wksZ.Cells(zeileZ, 2) = BKR
wksZ.Cells(zeileZ, 4) = BelDat
wksZ.Cells(zeileZ, 5) = "TS"
wksZ.Cells(zeileZ, 8) = "EUR"
wksZ.Cells(zeileZ, 9) = SKto
wksZ.Cells(zeileZ, 10) = BWAS
wksZ.Cells(zeileZ, 13) = HKto
wksZ.Cells(zeileZ, 14) = BWAH
wksZ.Cells(zeileZ, 17) = Erst
wksZ.Cells(zeileZ, 18) = Zuo
wksZ.Cells(zeileZ, 19) = Txt
Workbooks("Buchungsanweisung_Keller_KSt.xls").Sheets("Beleg").Activate
'die Datei Buchungsanweisung wird wieder angesprochen;
Ziel2:
zeileQ = zeileQ + 1
Loop Until zeileQ > 33
wkbZ.Close True
End Sub
Ich habe mich erst letzte Woche in VBA-Grundkenntnisse eingelesen...daher stell ich mich noch ziemlich ungeschickt an.
Das Makro überträgt bislang die Daten nicht in die Schnittstellen - Datei
und leider habe ich keine Ahnung weshalb es nicht funktioniert.. !?
Könnt ihr mir bitte weiterhelfen?
Lese mir zurzeit lauter Einweisungen in VBA durch, aber ohne Fehlermeldung komm ich da einfach nicht alleine weiter.
Vielen Dank!!! :-)
Grüße
John
https://www.herber.de/bbs/user/105483.xls
https://www.herber.de/bbs/user/105484.zip