Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1492to1496
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro überträgt nicht Werte in andere Datei

Makro überträgt nicht Werte in andere Datei
10.05.2016 12:53:52
John
Hallo zusammen,
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

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro überträgt nicht Werte in andere Datei
10.05.2016 17:35:33
Jürgen
Hallo John,
dafür, dass du dich erst eine Woche in die VBA-Grundkenntnisse einliest, finde ich das Makro nicht schlecht.
Auf den ersten Blick würde ich vermuten, dass wksZ nicht als Worksheet definiert wird.
Versuche es einmal beim "Ansprechen der Schnittstelle" mit
set wksZ = Workbooks("Schnittstelle.xls").Sheets("SchnSt")
.
Gruß
Jürgen

AW: Makro überträgt nicht Werte in andere Datei
11.05.2016 09:07:07
John
Hab's hinbekommen, dass er zumindest den oberen Teil der Buchungsanweisung in die Schnittstellen-Datei überträgt - oberer Teil: Zeile 12 - 20
Der untere Teil Zeile 26 - 33
wird aber nicht übertragen :-(
Fehlermeldung:
Objektvariable oder With-Blockvariable nicht festgelegt.
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, Betrag
Dim zeileQ, zeileZ
Dim wksQ As Worksheet
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 wksQ = ActiveSheet
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
Workbooks("Buchungsanweisung_Keller_KSt.xls").Sheets("Beleg").Activate
zeileQ = 12   'erste Zeile mit Buchungen
Do
BKR = wksQ.Cells(8, 2)            'Buchungskreis
BelDat = wksQ.Cells(8, 8)         'Belegdatum im Textformat
SKto = wksQ.Cells(zeileQ, 5)      'Soll-Konto
HKto = wksQ.Cells(zeileQ, 6)      'Haben-Konto
Nachz = wksQ.Cells(zeileQ, 3)     'Betrag Nachzahlung
Erst = wksQ.Cells(zeileQ, 4)      'Betrag Erstattung
Zuo = wksQ.Cells(zeileQ, 8)       'Zuordnung
Txt = wksQ.Cells(zeileQ, 2)       'Text
If SKto  1310000000 Then BWAS = wksQ.Cells(zeileQ, 7) Else BWAS = " _
If HKto  1310000000 Then BWAH = wksQ.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
ActiveWorkbook.ActiveSheet.Cells(zeileZ, 2) = BKR
ActiveWorkbook.ActiveSheet.Cells(zeileZ, 4) = BelDat
ActiveWorkbook.ActiveSheet.Cells(zeileZ, 5) = "TS"
ActiveWorkbook.ActiveSheet.Cells(zeileZ, 8) = "EUR"
ActiveWorkbook.ActiveSheet.Cells(zeileZ, 9) = SKto
ActiveWorkbook.ActiveSheet.Cells(zeileZ, 10) = BWAS
ActiveWorkbook.ActiveSheet.Cells(zeileZ, 13) = HKto
ActiveWorkbook.ActiveSheet.Cells(zeileZ, 14) = BWAH
ActiveWorkbook.ActiveSheet.Cells(zeileZ, 17) = Nachz
If Nachz = 0 Or Nachz = "" And Erst  0 Then _
ActiveWorkbook.ActiveSheet.Cells(zeileZ, 17) = Erst
ActiveWorkbook.ActiveSheet.Cells(zeileZ, 18) = Zuo
ActiveWorkbook.ActiveSheet.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 = wksQ.Cells(8, 2)            'Buchungskreis
BelDat = wksQ.Cells(8, 8)         'Belegdatum im Textformat
SKto = wksQ.Cells(zeileQ, 5)      'Soll-Konto
HKto = wksQ.Cells(zeileQ, 6)      'Haben-Konto
Betrag = wksQ.Cells(zeileQ, 4)    'Betrag
Zuo = wksQ.Cells(zeileQ, 8)       'Zuordnung
Txt = wksQ.Cells(zeileQ, 2)       'Text
If SKto  1310000000 Then BWAS = wksQ.Cells(zeileQ, 7) Else BWAS = " _
If HKto  1310000000 Then BWAH = wksQ.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 Betrag  "" 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
ActiveWorkbook.ActiveSheet.Cells(zeileZ, 2) = BKR
ActiveWorkbook.ActiveSheet.Cells(zeileZ, 4) = BelDat
ActiveWorkbook.ActiveSheet.Cells(zeileZ, 5) = "TS"
ActiveWorkbook.ActiveSheet.Cells(zeileZ, 8) = "EUR"
ActiveWorkbook.ActiveSheet.Cells(zeileZ, 9) = SKto
ActiveWorkbook.ActiveSheet.Cells(zeileZ, 10) = BWAS
ActiveWorkbook.ActiveSheet.Cells(zeileZ, 13) = HKto
ActiveWorkbook.ActiveSheet.Cells(zeileZ, 14) = BWAH
ActiveWorkbook.ActiveSheet.Cells(zeileZ, 17) = Erst
ActiveWorkbook.ActiveSheet.Cells(zeileZ, 18) = Zuo
ActiveWorkbook.ActiveSheet.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

Anzeige
AW: Makro überträgt nicht Werte in andere Datei
11.05.2016 09:40:13
John
Das Problem muss hier liegen:

Workbooks("Buchungsanweisung_Keller_KSt.xls").Sheets("Beleg").Activate
zeileQ = 26  'erste Zeile mit Buchungen
Do
BKR = wksQ.Cells(8, 2)            'Buchungskreis
BelDat = wksQ.Cells(8, 8)         'Belegdatum im Textformat
SKto = wksQ.Cells(zeileQ, 5)      'Soll-Konto
HKto = wksQ.Cells(zeileQ, 6)      'Haben-Konto
Betrag = wksQ.Cells(zeileQ, 4)    'Betrag
Zuo = wksQ.Cells(zeileQ, 8)       'Zuordnung
Txt = wksQ.Cells(zeileQ, 2)       'Text
If SKto  1310000000 Then BWAS = wksQ.Cells(zeileQ, 7) Else BWAS = " _
If HKto  1310000000 Then BWAH = wksQ.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 Betrag = 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) = ""         
kann mir jmd. sagen, wie ich das umändern soll?
folgender Fehler kommt bei der fett markierten Zeile:
Laufzeitfehler "91":
Objektvariable oder With-Blockvariable nicht festgelegt
vielen vielen Dank!!

Anzeige
AW: Makro überträgt nicht Werte in andere Datei
11.05.2016 09:50:15
John
Fehler ist behoben!!!

Vorher:
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 wksQ.Cells(zeileZ, 2) = ""
Nachher:
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) = ""
Funktioniert jetzt wunderbar!
Gruß john
Anzeige

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige