Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

VBA Schlaufe für Rechnungsdruck

Forumthread: VBA Schlaufe für Rechnungsdruck

VBA Schlaufe für Rechnungsdruck
08.09.2025 18:31:13
Thomas_R1984
Liebes Forum

Ich hoffe auf eure Hilfe, da ich mir das Leben (oder besser "die Arbeit") sehr gerne etwas leichter machen würde... ich habe über die Suche zwar ähnliche Hilfestellungen gefunden, allerdings habe ich es bisher nicht geschafft, mir einen funktionierenden Code abzulegen, welcher das macht, was ich möchte :-(.

Immer Ende Monat muss ich Rechnungen drucken für meine Kunden. Ich verwalte alle Daten in Excel und habe auch eine Rechnungsvorlage, die schon gut funktioniert. Ich muss nur die Kundennummer in Zelle C1 eingeben und eine PDF erstellen. Was ich schon geschafft habe ist ein Makro, welches mir die PDF erstellt, ihr den richtigen Namen gibt und sie im Ordner xy ablegt.

Nun würde ich gerne eine Schlaufe erstellen, welche:

- Im WS "RG_autom" in Zelle C1 die erste Kundennummer aus Spalte A im WS "RG_KD" einfügt
- dann die PDF erstellt
- und danach die nächste Kundennummer in C1 einfügt, wieder eine PDF erstellt, usw.

Und zwar so lange, bis die ganze Liste aus Spalte A aus dem WS "RG_KD" durch ist und für jeden Kunden die Rechnung erstellt wurde.

Ich habe schon hier gesucht, Google durchforstet und einiges ausprobiert, bisher leider ohne Erfolg.

Könnte mir hier jemand helfen? Den aktuellen Code für den PDF-Druck ist folgender:

Sub PDFerstellen()

'
' PDFerstellen Makro
'
' Tastenkombination: Strg+b
'
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\info\OneDrive\frucht-abo.ch\Rechnungen Kunden\Neue_Rechnungen\RG_Fruchtabo_" & Range("C1") & "-" & Range("C2") & ".pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True
Range("C1").Select
End Sub


Danke euch allen im Voraus ganz herzlich :-)

Liebe Grüsse
Thomas
Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Schlaufe für Rechnungsdruck
08.09.2025 20:03:56
JoWE
Hallo,
Du meinst eigentlich eine Schleife!!!
Ich habe jetzt angenommen, dass die Kundenliste "RS_KD" in Zeile 2 beginnt, jeder Kunde nur eine Zeile hat
und die Liste keine leeren Zeilen enthält
Ist das so? Dann versuchs mal so:
Option Explicit


Sub PDFerstellen()
'
' PDFerstellen Makro
'
' Tastenkombination: Strg+b
'
Dim RSKD As Worksheet
Set RSKD = Worksheets("RS_KD")
Dim RGAutom As Worksheet
Set RGAutom = Worksheets("RG_autom")
Dim ze As Long

'Die Schleife läuft im Sheet "RS_KD" in der Spalte A beginnend in Zeile 2 bis zum letzten gefüllten Eintrag durch
'und fügt in jedem Schleifenschritt jeweils den Wert aus der Kundenliste in C1 ein-
For ze = 2 To RSKD.Cells(Rows.Count, 1).End(xlDown)
RGAutom.Cells("C1") = RSKD.Cells(ze, 1)

'ab hier läuft jetzt Dein Code
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\info\OneDrive\frucht-abo.ch\Rechnungen Kunden\Neue_Rechnungen\RG_Fruchtabo_" _
& RGAutom.Range("C1") & "-" & RGAutom.Range("C2") & ".pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True

'jetzt gehts zum nächsten Schleifenschritt
Next

RGAutom.Range("C1").Select
End Sub

Gruß
Jochen

Anzeige
AW: VBA Schlaufe für Rechnungsdruck
08.09.2025 20:56:46
Thomas_R1984
Hallo Jochen

Wow, vielen herzlichen Dank für die schnelle Hilfe :-)!

Als Erstes, natürlich, ich meinte "Schleife", nicht Schlaufe :-D! Ich habe deinen Code mal getestet... musste noch etwas anpassen, der WS heisst "RG_KD" (nicht RS_KD); alles eingefügt, beim Ausführen gibt's keine Fehlermeldung, aber es passiert... nichts. Resp. macht er zumindest keine PDFen in meinen Ordner :-). Was ich noch angepasst habe, ist auf "false" zu stellen bei "openafterpublishing", wenn er mir 200 PDF-Dateien erzeugt, muss er ja nicht jede öffnen.

Der Code sieht bei mir jetzt so aus:

Option Explicit


Sub PDFerstellen()
'
' PDFerstellen Makro
'
' Tastenkombination: Strg+b
'
Dim RGKD As Worksheet
Set RGKD = Worksheets("RG_KD")
Dim RGautom As Worksheet
Set RGautom = Worksheets("RG_autom")
Dim ze As Long


For ze = 2 To RGKD.Cells(Rows.Count, 1).End(xlDown)
RGautom.Cells("C1") = RGKD.Cells(ze, 1)

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\info\OneDrive\frucht-abo.ch\Rechnungen Kunden\Neue_Rechnungen\RG_Fruchtabo_" & Range("C1") & "-" & Range("C2") & ".pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True

Next

RGautom.Range("C1").Select
End Sub


Fällt dir vielleicht gleich auf, was ich falsch gemacht habe...?

Lieben Dank und LG
Thomas
Anzeige
AW: VBA Schlaufe für Rechnungsdruck
08.09.2025 21:33:24
JoWE
Hallo,
als erstes fällt mir auf, dass ich auch in dem zuerst von Dir angeliefertem Code noch zwei
Änderungen eingefügt hatte. Nämlich vor dem .Range auch RGAutom
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _

"C:\Users\info\OneDrive\frucht-abo.ch\Rechnungen Kunden\Neue_Rechnungen\RG_Fruchtabo_" _
& RGAutom.Range("C1") & "-" & RGAutom.Range("C2") & ".pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True

probier es mal damit.
Ansonsten poste bitte die Kopie Deiner Arbeitsmappe mit nur wenigen anonymisierten Daten.
Gruß
Jochen
Anzeige
AW: VBA Schlaufe für Rechnungsdruck
08.09.2025 21:42:57
JoWE
Und statt ActiveSheet.ExportAs...
dann besser auch RGAutom.ExportAs...
AW: VBA Schlaufe für Rechnungsdruck
08.09.2025 21:56:09
Thomas_R1984
Ach so, das habe ich gar nicht gesehen... habe meinen Code belassen und deine Ergänzungen eingefügt, sorry! Leider tut sich trotzdem noch nichts... habe nun meine Liste mal aufs nötigste reduziert und aus Kundensicht anonymisiert; mich findet man ja eh im Netz =)

https://www.herber.de/bbs/user/178854.xlsm

Herzlichen Dank für deine Zeit...
Anzeige
AW: VBA Schlaufe für Rechnungsdruck
08.09.2025 22:03:22
Thomas_R1984
Huch, zu spät gesehen, Beispieldatei ist online... noch ohne das RGautom vor dem ExportAs... habe das gerade noch kurz getestet, leider ebenfalls ohne Erfolg :-(
AW: VBA Schlaufe für Rechnungsdruck
08.09.2025 22:27:26
JoWE
mein Fehler, jetzt aber:
Sub PDFerstellen()

'
' PDFerstellen Makro
'
' Tastenkombination: Ctrl+b
'
Dim RGKD As Worksheet
Set RGKD = Worksheets("RG_KD")
Dim RGAutom As Worksheet
Set RGAutom = Worksheets("RG_autom")
Dim ze As Long


For ze = 2 To RGKD.Cells(2, 1).End(xlDown).Row
RGAutom.Range("C1").Value = RGKD.Cells(ze, 1)

RGAutom.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\info\OneDrive\frucht-abo.ch\Rechnungen Kunden\Neue_Rechnungen\" _
& "RG_Fruchtabo_" & RGAutom.Range("C1") & "-" & RGAutom.Range("C2") & ".pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True
Next

RGAutom.Range("C1").Select
End Sub
Anzeige
AW: VBA Schlaufe für Rechnungsdruck
08.09.2025 22:28:40
JoWE
aber setze: OpenAfterPublish:=True wieder auf false !!!
AW: VBA Schlaufe für Rechnungsdruck
08.09.2025 22:34:49
Thomas_R1984
WOW, der Wahnsinn!!! Vielen vielen herzlichen Dank!!! Funktioniert einwandfrei :-)!

Du hast mir gerade monatlich etwa zwei Stunden Arbeit gespart... ich danke dir ganz herzlich!!
AW: VBA Schlaufe für Rechnungsdruck
08.09.2025 22:36:10
JoWE
gerne
Anzeige
AW: VBA Schlaufe für Rechnungsdruck
08.09.2025 20:34:08
xlKing
Hallo,

Kann man so machen. Eigentlich schreibt man solche Rechnungen aber im Word und nimmt die Exceldaten, als Datenquelle für einen Serienbrief. Schau dir mal dieses Video an - https://www.youtube.com/watch?v=keHAZ-ArZ7k - Vielleicht kannst du dann beim nächsten Mal die Vorlage schöner gestalten. :-)

PS: Word hat auch einen PDF-Drucker

Gruß Mr. K.
Anzeige
AW: VBA Schlaufe für Rechnungsdruck
09.09.2025 13:03:57
Piet
Hallo Thomas

interessanter Thread, herzlichen Glückwunsch das er endlich läuft. Den Fehler sah ich auf Anhieb.
RGKD.Cells(Rows.Count, 1).End(xlDown) --> klappt mit dem Befehl .End(xlUP)
Wenn du von Rows.Count, der letzten Zelle im Blatt weiter nach unten gehen willst, das klappt nicht!

Kleiner, feiner Unterschied zwischen xlUP und xlDown, nur zum VBA lernen!
Ich verwende lieber den Befehl xlUP, denn wenn es in der Tabelle eine Leerzeile ist, stoppt xlDown an der Stelle!
Der Befehl xlUP findet immer die letzte Zeile, egal wieviele Leerzeilen es gibt. Nur als VBA Info zum lernen

mfg Piet
Anzeige
AW: VBA Schlaufe für Rechnungsdruck
09.09.2025 13:21:17
Thomas_R1984
Hallo Piet

Herzlichen Dank für deine Rückmeldung und die guten Tipps!

Ja extrem toll, dass es nun klappt... hab's heute früh mal mit dem letzten Monat getestet - es "rattert" natürlich eine Weile, wobei "Weile" im Vergleich zu vorher natürlich lächerlich klingt, aber nach etwa zwei Minuten war mein Ordner mit 198 Rechnungen gefüllt :-). An der Stelle nochmals ganz lieben Dank an JoWE!

Deine Tipps klingen gut, wobei ich beim Erstellen der Rechnungen dann die Kundennummern aus der Liste mit den Lieferungen ziehe; da jeder Kunde mehrere Lieferungen hat, kann man kurz die Dupletten entfernen und dann ist die Liste so oder so lückenlos :-). Aber ausprobieren werde ich das natürlich mal, auf einer Kopie natürlich. Ich bin ja überhaupt nicht in VBA drinnen, habe zwar schon einige Makros "aufgezeichnet" und den Befehl vorher, welcher jeweils einfach eine PDF erstellt und mit dem richtigen Namen abgespeichert hat, habe ich mir auch schon mithilfe der Beiträge hier erstellt. Aber solche genialen Befehle erleichtern einem das Leben schon massiv. Es ist wie immer, man beginnt mit einem Business, welches am Anfang naturgemäss sehr klein ist und macht die paar Rechnungen praktisch ganz manuell; dann hat man alle Hände voll zu tun und kümmert sich um alles andere, bis man dann immer Ende Monat vor einem riesigen Berg Arbeit steht :-D.

LG Thomas
Anzeige
AW: VBA Schlaufe für Rechnungsdruck
08.09.2025 21:00:25
Thomas_R1984
Danke für den Tipp; ist sicherlich gut gemeint, aber ich mache die Rechnungen nun seit drei Jahren so (seit Beginn meiner Selbständigkeit). Die Rechnungen aus Excel schauen gut aus, laufen bei jedem Unternehmen und Behörde durch, nur wird das mit dem manuellen Erstellen (resp. "halb-manuell") langsam echt zeitaufwändig... je mehr Kunden, etcpp, erklärt sich von selbst :-). Trotzdem vielen Dank!
Anzeige
AW: VBA Schlaufe für Rechnungsdruck
09.09.2025 11:37:04
Herbert Grom
Hallo Mr. K.,

wo steht das geschrieben? Es ist allemal die bessere, weil einfachere und unkompliziertere Art, Rechnungen in Excel zu schreiben. Ich mache das seit rund 30 Jahren so, nachdem mich des ewige hin und her zwischen Word und Excel genervt hat. Es gibt nix besseres, als Rechnungen, und auch Serienbriefe etc., in Excel zu schreiben!

Servus
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige