Seriendruck in Excel (Sverweis)
Hallo Leute,
ich kenne die Funktion des Serienbriefes in Microsoft Word, genau so etwas möchte ich in Excel versuchen.
Es gibt ein Konditionsblatt, dass sich bei Eingabe einer Nummer (Kundennummer) ändert. Je nach Kundennummer ändern sich Preise und Rabatte.
Das Feld der Kundennummer ist mit einem SVERWEIS mit einer anderen Tabelle verknüpft (Da wo die Datensätze sind)
Diese würden wir gerne drucken und den Kunden aushändigen. Jedoch 940 Konditionsblätter einzeln einzugeben und zu drucken ist sehr unpraktisch.
Gibt es eine Möglichkeit einen Seriendruck in Excel zu starten?
MfG
MWTUJE
ich kenne die Funktion des Serienbriefes in Microsoft Word, genau so etwas möchte ich in Excel versuchen.
Es gibt ein Konditionsblatt, dass sich bei Eingabe einer Nummer (Kundennummer) ändert. Je nach Kundennummer ändern sich Preise und Rabatte.
Das Feld der Kundennummer ist mit einem SVERWEIS mit einer anderen Tabelle verknüpft (Da wo die Datensätze sind)
Diese würden wir gerne drucken und den Kunden aushändigen. Jedoch 940 Konditionsblätter einzeln einzugeben und zu drucken ist sehr unpraktisch.
Gibt es eine Möglichkeit einen Seriendruck in Excel zu starten?
MfG
MWTUJE
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 292182
Url: https://administrator.de/contentid/292182
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
9 Kommentare
Neuester Kommentar
Geht eigentlich ziemlich einfach mit VBA.
Kommt eben auf die Kundennummern drauf an.
Die sollten in einer Exceltabelle vorhanden sein.
Dann kannst du mittels VBA in die Zelle, die SVERWEIS abfragt, die Kundennummern der Reihe nach ausgeben und gleich das entsprechende Sheet oder den enstprechenden Bereich ausdrucken lassen.
Kommt eben auf die Kundennummern drauf an.
Die sollten in einer Exceltabelle vorhanden sein.
Dann kannst du mittels VBA in die Zelle, die SVERWEIS abfragt, die Kundennummern der Reihe nach ausgeben und gleich das entsprechende Sheet oder den enstprechenden Bereich ausdrucken lassen.
Hallo MWTUJE,
Binde den Ausgabebereich in Excel per DDE in ein Wordformular ein:
Bereich markieren,
Strg-c
in Word-formular wechseln
Einfügen - Inhalte einfügen - Excel Tabelle - Verknüpfung - ok
etwas nachformatieren und in Word die Serienbrieffunktion starten
Datenquelle sind hier die Kundennr und die Adressfelder aus Excel
Ansonsten per VBA
Gruß aus Bayern
Binde den Ausgabebereich in Excel per DDE in ein Wordformular ein:
Bereich markieren,
Strg-c
in Word-formular wechseln
Einfügen - Inhalte einfügen - Excel Tabelle - Verknüpfung - ok
etwas nachformatieren und in Word die Serienbrieffunktion starten
Datenquelle sind hier die Kundennr und die Adressfelder aus Excel
Ansonsten per VBA
Gruß aus Bayern
VBA Beispiel:
Kundennummern stehen auf Blatt Kunden ab A2 untereinander.
Zelle wo die Kundennummer eingefügt werden muss ist hier auf einem Blatt mit dem Namen Konditionsblatt in Zelle B3
Einen bestimmten Drucker kann man der .PrintOut-Methode auch mitgeben wenn man möchte, z.B.
Gruß grexit
Kundennummern stehen auf Blatt Kunden ab A2 untereinander.
Zelle wo die Kundennummer eingefügt werden muss ist hier auf einem Blatt mit dem Namen Konditionsblatt in Zelle B3
Sub PrintAll()
With Sheets("Kunden")
For Each cell In .Range("A2:A" & .Cells(Rows.Count, "A").End(xlUp).Row)
If cell.Value <> "" then
With Sheets("Konditionsblatt")
.Range("B3").Value = cell.Value
.PrintOut
End With
End if
Next
End With
End Sub
.PrintOut ActivePrinter:="HP Laserjet 1320"
Hallo!
Aus Performancegründen, d.h. damit nur ein Druckauftrag (schnelle Druckausgabe) erfolgt, würde ich per Makro (VBA) eine temporäre Arbeitsmappe erstellen, die alle Kundennummergenerierte Tabellenblätter enthält und die temporäre Arbeitsmappe anschließend komplett auf einen Schlag ausdrucken und die Arbeitsmappe ohne zu speichern wieder schließen?
Gruß Dieter
Aus Performancegründen, d.h. damit nur ein Druckauftrag (schnelle Druckausgabe) erfolgt, würde ich per Makro (VBA) eine temporäre Arbeitsmappe erstellen, die alle Kundennummergenerierte Tabellenblätter enthält und die temporäre Arbeitsmappe anschließend komplett auf einen Schlag ausdrucken und die Arbeitsmappe ohne zu speichern wieder schließen?
Gruß Dieter
Zitat von @MWTUJE:
Muss ich das im VBA in die Tabelle oder in das Modul des Konditionsblatts schreiben?
Ist egal wo...Muss ich das im VBA in die Tabelle oder in das Modul des Konditionsblatts schreiben?
Das Skript geht davon aus das nach der letzten Kundennummer in Spalte A absolut nichts mehr in dieser Spalte steht. Wenn du das nicht realisieren kannst und zwischen den Kundenummern keine leeren Zellen sind, kann man den Range auch so einschränken, Zeile 3 so ändern
Du kannst natürlich auch mit einer simplen IF Abrage prüfen (oben ergänzt) ob der Inhalt der Zelle einen Wert hat, kommt immer ganz auf dein Sheet an.
Wir haben hier halt null Info von deinem Sheet, bedenke das.
Geht hier ansonsten im Test einwandfrei..., ansonsten hast du irgendwo einen Typo oder Code nicht komplett kopiert, überprüfe Zeile 3 penibelst ob sie wirklich mit dem Code oben übereinstimmt. Hier reicht es schon wenn du einen Punkt weglässt, das es nicht wie gewünscht läuft.
For Each cell In .Range("A2",.Range("A2").End(xlDown))
Wir haben hier halt null Info von deinem Sheet, bedenke das.
Geht hier ansonsten im Test einwandfrei..., ansonsten hast du irgendwo einen Typo oder Code nicht komplett kopiert, überprüfe Zeile 3 penibelst ob sie wirklich mit dem Code oben übereinstimmt. Hier reicht es schon wenn du einen Punkt weglässt, das es nicht wie gewünscht läuft.