Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Journal für Rechnungen





Frage

Hallo zusammen, ich habe eine Vorlagemappe erstellt,die aus fünf Tabellen besteht, eine Erfassungstabelle und drei Rechnungen und einen Lieferschein.Die Endbeträge und Rechnungsnummern und Datum sollen vor dem Speichern in eine andere Tabelle übertragen werden. Diese dient dann als Journal für die erfassten rechnungen. Bitte zeigt mir einen Weg wie ich das lösen kann. Danke vorab Gruß

Antwort 1 von schnallgonz

N´abend,
gib mal "Rechnung" in der Suche ein und guxu hier:
https://supportnet.de/threads/997627

Vielleicht kannst Du dort etwas für Deine Zwecke zusammenkopieren, wenn nicht, nochmal melden

gruß
schnallgonz

Antwort 2 von marcors

Hallo Scnallgonz,
erstmal danke für die rasche Antwort.
Das funktioniert nur wenn die journaltabelle und die Rechnungen in dem selben Tabellenblatt befinden.
Ich habe die Rechnungen als eine Vorlage (xlt) und die Journaltabelle als eine xls unter "C:\daten\journal.xls gespeichert. Wenn die Vorlage aufgerufen wird ist diese leer und wird durch Erfassen mit daten gefüllt, vor dem Speichern möchte ich gerne einige relevanten Daten wie Betrag, Nummer,Kunden und Datum in die Journaltabelle übertragen.
Gruß Marco

Antwort 3 von schnallgonz

Tagchen,
Zitat:
Das funktioniert nur wenn die journaltabelle und die Rechnungen in dem selben Tabellenblatt befinden.

nö, guxu Antwort24
Zitat:
Schreibe also bitte vor alle Sheetsaufrufe die Arbeitsmappe nach folgendem Muster:
Workbooks("Neue Rechnung.xls").Sheets("RgVorlage")

den geänderten code siehst Du in Antwort27

Du könntest bei Deiner xlt per Makro die journal.xls öffnen lassen.
Den Namen der jeweils neuen Rg-xls liest Du in eine Variable:
rgvor= ActiveSheet.Name


und rufst diese Datei wieder auf mit
Sheets(rgvor).Activate


Könnte dann also so aussehen für Zelle B7:

Sheets(rgvor).Cells(7, 2).Copy
ZeileA = Workbooks("journal.xls").Sheets("journal2006"). _
Range("A65536").End(xlUp).Offset(1, 0).Row
Workbooks("journal.xls").Sheets("journal2006").Cells(ZeileA, 1).PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False

gruß
schnallgonz

Antwort 4 von marcors

Hallo schnallgonz,

ich habe es gerade ausprobiert, ohne Erfolg.
meine Rechnungsvorlagemappe ist so aufgebaut:
die Vorlage heisst erfassen.xlt,
die erste tabelle dient nur zum erfassen der rechnungen. Alle werte werden direkt in die jeweiligen rechnungen reingeschrieben.
blatt2 ist eine rechnung (rechnung1), blatt3 ist eine rechnung (rechnung2 und soweiter. Die Journaltabelle befindet sich auf c:\daten\journal.xls.
aus den rechnungen sollen nun die endbeträge vor dem speichern in die tabelle journal auf c:\daten\journal.xls übertragen werden.
Für Deine hilfe sage ich danke
gruß
marco

Antwort 5 von achim_13086

Hallo Marco,

ich stand vor einem ähnlichen Problem.

Allerdings habe ich die Datei mit den Rechnungseingaben nicht als Vorlagemappe erstellt, sondern als Arbeitsmappe mit " .xls " definiert.

Das entsprechende Rechnungsblatt befindet sich bei mir zur Kontrolle in der Arbeitsmappe mit der Eingabemaske. Aus diesem Tabellenblatt wird per Makro die Rechnungsnummer vergeben. Per Schaltfläche und Makro werden die Rechnungsdaten in eine eigene Vorlage ( hier: Re.xlt ) kopiert und die neue Rechnung mit neuem Namen ohne Schaltflächen gespeichert.

Nach dem Auslösen des Drucks wird ein Original ausgedruckt und anschließend mit dem Aufdruck " Duplikat " versehen und ausgedruckt. Sofern ein Lieferschein notwendig ist, wird das Wort Rechnung durch Lieferschein und die Rechnungsnummer durch die entsprechende Lieferscheinnummer ersetzt.

Nach dem Drucken werden notwendige Rechnungsdaten in die im Hintergrund liegende Journaldatei geschrieben. Diese Datei wurde mit einem Makro zusammen mit der Kunden- und Artikeldatei geöffnet und in den Hintergrund gelegt.

Zum Abschluß der Arbeit wird das gesamte Programm wiederum per Makro geschlossen. Alle Dateien im Hintergrund werden gespeichert und geschlossen.

Gruß
Joachim

Antwort 6 von marcors

Hallo achim,
bei mir funktioniert die Erfassung von Rechnungen und lieferschein auf einer vorlage.wie funktioniert es,dass von dieser vorlage die daten in eine datei reingeschrieben werden. wie kann ich excel dazu bewegen die tabelle journal, die auf c:\daten liegt anzusprechen.
Gruß marco

Antwort 7 von Sira

hallo marcors,
vielleicht liegt Dein Problem im Speicherort Deiner Vorlage.
Da Excel Vorlagen normalerweise im Ordner "xlstart" im Office-Verzeichnis speichert und sucht, ist das evtl. ein Grund (siehe dazu auch die Excel-Hilfe).
Du kannst allerdings in Excel unter:
Extras - Optionen - Register Allgemein
auch einen zusätzlichen Startordner "C:\Daten" angeben.
Wäre vielleicht mal einen Versuch wert.
Gruß Sira

Antwort 8 von marcors

Hallo sira,
leider nichts gebracht, danke trotzdem.
gruß Marco

Antwort 9 von marcors

hat keine eine idee??
Dann wünsche euch noch viel spass und gute nacht, ich mach feierabend
gruß marco

Antwort 10 von schnallgonz

Hallo Marco,
mir ist Dein Problem klar, xlt, nach jedem Datei neu wird eine Kopie angelegt mit fortlaufender Nr.

Deswegen schrieb ich:
Zitat:
Den Namen der jeweils neuen Rg-xls liest Du in eine Variable:
rgvor= ActiveSheet.Name


Diese Zeile muß an den Anfang Deines makros!
Danach wählst Du ein zu kopierende Zelle aus, gehst zu der journal.xls und schreibst dort den kopierten Wert in eine bestimmte Spalte in die erste freie Zeile.
Dann wieder mit
rgvor= ActiveSheet.Name

zurück in Deinen Rechnungskopievordruck und die nächste Zelle kopieren usw
Sollte eigentlich funzen, wenn nicht, melde mal konkret, wo es hakt.
gruß
schnallgonz

Antwort 11 von marcors

hallo schnallgonz,

kanst du mir den txt schreiben wie das ungefähr aus sehen kann.ich kann machen was ich will es funktioniert nicht. ich habe den text von fall27 so umgeändert, aber die werte aus den einzelnen zellen werden nicht übernommen.die fehlermeldung lautet : Laufzeitfehler, Index ausserhalb des gültigen bereichs.
dabei habe ich nur
ZeileB = Workbooks("journal.xls").Sheets("journal2006"). _
Range("B65536").End(xlUp).Offset(1, 0).Row
eingetragen.
gruß
Marco

Antwort 12 von marcors

Hallo schnallgonz,
ich habe jetzt meine situation vereinfacht
siehe unten:
Sub test()

ChDir "C:\Daten\Journal2006"
Workbooks.Open Filename:="C:\Daten\Journal2006\journal.xls"
ActiveWindow.WindowState = xlMinimized
Sheets("journal").Select
Range("A1:E1").Select
Range("a1").Activate
Selection.Copy
Windows("journal.xls").Activate
ActiveWindow.WindowState = xlNormal
Range("B6:F6").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("B7").Select
Application.CutCopyMode = False
ActiveWorkbook.Save
ActiveWindow.Close
End Sub

wie kann ich jetzt die nächsten datensätze in die zeile b7 usw übertragen.
z.z überschreibt er die daten
gruß Marco

Antwort 13 von schnallgonz

Hallo Marco,
jetzt komme ich mit den ganzen journalen nicht mehr klar.
Meine Hinweise mit SheetName auslesen brauchst Du nicht, weil mit folgendem Code immer Deine RgVorlage aktiv ist.
Du befindest Dich in der Rechnungsvorlage (Kopie), Name egal.

Option Explicit
Sub Kopinksi()
Dim ZeileB As Long
Rem Werte kopieren in der Rechnungsvorlage
Range("A1:E1").Copy
Rem erste freie Zeile in SpalteB auslesen
ZeileB = Workbooks("journal.xls").Sheets("Tabelle1"). _
Range("B65536").End(xlUp).Offset(1, 0).Row
Rem kopierte Werte in journal Tabelle1 einfügen in erster freier Zeile in Spalte B
Workbooks("journal.xls").Sheets("Tabelle1").Cells(ZeileB, 2).PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Rem nächste Werte kopieren, Du bleibst automatisch in der RgVorlagenKopie
Range("A8:E8").Copy
End Sub


Wenn die Werte im Journal nicht alle untereinander in SpalteB sollen, mußt Du den Code anpassen, hier Beispiel für Spalte D:
zusätzliche Variable dimensionieren

Dim ZeileD As Long


ZeileD = Workbooks("journal.xls").Sheets("Tabelle1"). _
Range("D65536").End(xlUp).Offset(0, 0).Row


Workbooks("journal.xls").Sheets("Tabelle1").Cells(ZeileB + 1, 4).PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False


Viel Glück
gruß
schnallgonz

Antwort 14 von schnallgonz

Scusa,
eine 1 vergessen:

ZeileD = Workbooks("journal.xls").Sheets("Tabelle1"). _
Range("D65536").End(xlUp).Offset(1, 0).Row


Antwort 15 von marcors

Hallo schnallgonz,

danke dir für die hilfe.
Es funktioniert super.
Schönen Abend und bis zum nächsten mal.
Gruß Marco

Antwort 16 von schnallgonz

Salve Marco,
freut mich, dass dem Rechnungenschreiben nichts mehr im Wege steht.
Danke für die Rückmeldung
gruß
schnallgonz

Antwort 17 von marcors

Hallo schnallgonz

erstmal ein frohes neues jahr.
mit der Formel hat es soweit funktioniert jedoch wenn ich die erstellten rechnungen öffne und weiterbearbeite kann ich die geänderten beträge nicht mehr übertragen.da die datei anders heisst.
wie kann ich die formel so ändern dass jederzeit übertragung möglich ist unabhängig vom namen der datei.
Gruß Marco

Antwort 18 von marcors

mein Text erscheint nicht, warum

Antwort 19 von schnallgonz

Hallo,
kann Dir leider nicht ganz folgen.
Der Code liest Werte aus der gerade aktiven Datei, Name egal, und schreibt sie in die journal.xls.
Was genau funktioniert nicht und welcher Dateiname ändert sich?
gruß
schnallgonz

Antwort 20 von marcors

Hallo schnallgonz

danke für die schnelle reaktion.
Also wenn ich die rechnungsvorlage aufrufe und mit daten befülle kann ich die werte übertragen, Wenn ich die Vorlage unter einem Namen speichere,der anders ist als die vorlage, und diesen wieder aufrufe kann nicht mehr übertragen werden,

gruß Marco

Antwort 21 von schnallgonz

Hi,
sieht so aus, als ob beim speichern das makro nicht mitgespeichert wird.
Ich habe Excel97, da funzt es.
Vielleicht gibt es bei neueren Excelversionen eine Option, um dies einzustellen, wäre natürlich am einfachsten.

Sonst fällt mir nur ein, das Makro in der personl.xls abzuspeichern, dann steht es immer zur Verfügung.
Personl.xls findest Du unter "Fenster--Einblenden".
Wenn nicht, zeichne einfach ein Makro auf, dann wird die personl.xls automatisch erstellt.
Dort dann das Makro als Modul anlegen, fertig.

gruß
schnallgonz

Antwort 22 von marcors

Sub test()

ChDir "C:\Daten\Journal"
Workbooks.Open Filename:="C:\Daten\Journal\journal.xls"
ActiveWindow.WindowState = xlMinimized
Sheets("journal").Select
Windows("journal.xls").Activate
ActiveWindow.WindowState = xlNormal
Dim ZeileB As Long
Dim ZeileC As Long
Dim ZeileD As Long
Dim ZeileE As Long
Dim ZeileF As Long
Rem Werte kopieren in der Rechnungsvorlage
Workbooks("erfassen").Sheets("journal"). _
Range("A1:E1").Copy
Rem erste freie Zeile in SpalteB auslesen
ZeileB = Workbooks("journal.xls").Sheets("tabelle1"). _
Range("B65536").End(xlUp).Offset(1, 0).Row
Rem kopierte Werte in journal Tabelle1 einfügen in erster freier Zeile in Spalte B
Workbooks("journal.xls").Sheets("tabelle1").Cells(ZeileB, 2).PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Application.CutCopyMode = False
ActiveWorkbook.Save
ActiveWindow.Close
End Sub

so sieht die formel aus und solange ich mich in der vorlage erfassen.xlt befinde läuft die übertragung. Aber wenn die datei gespeichert wird unter dem kundennamen z.b. meier.xls und wenn ich meier.xls wieder aufrufe, läuft die übertragung nicht, da in der formel Workbooks("erfassen") steht und nicht meier.xls.
gruß marco

Antwort 23 von schnallgonz

Hallo Marco,
da muss man erstmal drauf kommen!
in Antwort 15 schreibst Du "funktioniert super", da nehme ich an, dass Du den Code aus meiner Antwort genommen hast.

anstatt

Workbooks("erfassen").Sheets("journal"). _
Range("A1:E1").Copy


schreib einfach

Range("A1:E1").Copy


Voraussetzung ist nur, dass die Rechnungsdatei beim Makrostart die aktive Datei ist.

gruß
schnallgonz

Antwort 24 von marcors

sei nicht so bescheiden, es ist der code aus deinem text nur etwas vereinfacht, ich habe eine tabelle an den rechnungen drangemacht und journal genannt da meine vorlage aus drei tabellen besteht, wollte ich es einfacher haben.habe somit deinen code etwas verändert. aber es funktioniert jetzt nicht mehr. der überträgt auch etwas aber es werden keine werte übertragen. er öffnet die journaltabelle und schliesst diese wieder ohne einen wert reinzuschreiben
gruß marco

Antwort 25 von schnallgonz

Hi,
mit den ganzen journalen kam ich nicht mehr hinterher...
Ich dachte, journal gibt es nur im Zielbereich, egal:
Workbooks("erfassen").Sheets("journal"). _
Range("A1:E1").Copy

bedeutet, dass i m m e r A1:E1 aus dem Blatt "journal" der Mappe "erfassen" kopiert wird.
Also nichts aus weiteren Blättern derselben Mappe.

Du kannst das aber alles schrittweise überprüfen, indem Du im Makroeditor den Code mit der Taste "F8" startest, dabei am besten das Fenster etwas verkleinerst, so dass der Blick auf die Excelmappen frei ist.
Dann siehst Du auch, welchen Bereich er markiert und kopiert.
Und dann sehen wir mal weiter
gruß
schnallgonz

Antwort 26 von marcors

Hallo schnallgonz,
jetzt funktioniert auch aus den gespeicherten dateien.
Nochmals vielen dank.
bis zum nächsten mal
Gruß Marco

Antwort 27 von schnallgonz

Hallo Marcus,
schön, dass es funzt,
Danke für die Rückmeldung.
gruß
schnallgonz

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: