Discussion:
Seriendruck nur mit Excel
(zu alt für eine Antwort)
Maria Brümmer
2013-06-20 16:55:36 UTC
Permalink
Hallo zusammen, ich hoffe dass ich hier richtig bin.
Ich bin neu hier und habe eine Frage zu Excel 2010:

Ich habe eine Excel-Mappe, in der durch Ändern einer Zelle (B5) in einem
Arbeitsblatt (Druck) die Zahlen des gesamten Arbeitsblattes verändert
werden (Stundenabrechnungen für die Mitarbeiter).
Ich trage das Kürzel des Kollegen ein, mit einem Verweis wird daraus der
komplette Name. Dann wird anhand des Namens in den verschiedenen Listen
nach den Werten gesucht. Das klappt alles hervorragend.
Nun soll aber nicht für alle 50 Kollegen das Kürzel von Hand eingetragen
und dann der Druck veranlasst werden, sondern ich benötige eine
Schaltfläche, die dafür sorgt, dass nacheinander alle Kürzel auf dem
Blatt eingetragen werden dann der Druck veranlasst wird und dann zum
nächsten Kollegen gesprungen wird.

Die Kürzel und die damit verbundenen Namen habe ich in die Tabelle
„Listen“ untergebracht und zwar in Spalte F – diese Spalte hat die
Überschrift „Kürzel“.

Ich hoffe jemanden zu finden, der mir helfen kann.

Maria
Claus Busch
2013-06-20 17:07:28 UTC
Permalink
Hallo Maria,
Post by Maria Brümmer
Ich habe eine Excel-Mappe, in der durch Ändern einer Zelle (B5) in einem
Arbeitsblatt (Druck) die Zahlen des gesamten Arbeitsblattes verändert
werden (Stundenabrechnungen für die Mitarbeiter).
Ich trage das Kürzel des Kollegen ein, mit einem Verweis wird daraus der
komplette Name. Dann wird anhand des Namens in den verschiedenen Listen
nach den Werten gesucht. Das klappt alles hervorragend.
Nun soll aber nicht für alle 50 Kollegen das Kürzel von Hand eingetragen
und dann der Druck veranlasst werden, sondern ich benötige eine
Schaltfläche, die dafür sorgt, dass nacheinander alle Kürzel auf dem
Blatt eingetragen werden dann der Druck veranlasst wird und dann zum
nächsten Kollegen gesprungen wird.
teste mal folgenden Code. Falls die Berechnung nach Eintrag in B5 länger
dauert, müsste vielleicht noch eine kurze Wartezeit eingebaut werden.
Bei diesem Code lasse ich zuerst die Zeilenanzahl in F berechnen,
dadurch läuft es immer korrekt, auch wenn jemand dazu kommt oder weg
fällt.

Sub ListenAusdruck()
Dim LRow As Long
Dim rngC As Range

With Sheets("Listen")
LRow = .Cells(.Rows.Count, "F").End(xlUp).Row
For Each rngC In .Range("F2:F" & LRow)
Sheets("Druck").Range("B5") = rngC
Sheets("Druck").PrintOut
Next
End With
End Sub


Mit freundlichen Grüßen
Claus Busch
--
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3
Maria Brümmer
2013-06-20 17:43:23 UTC
Permalink
Hallo Claus, es klappt super - Danke.
Schade, dass ich so wenig davon verstehe, um das selber zu erstellen.
Maria
Post by Claus Busch
Hallo Maria,
Post by Maria Brümmer
Ich habe eine Excel-Mappe, in der durch Ändern einer Zelle (B5) in einem
Arbeitsblatt (Druck) die Zahlen des gesamten Arbeitsblattes verändert
werden (Stundenabrechnungen für die Mitarbeiter).
Ich trage das Kürzel des Kollegen ein, mit einem Verweis wird daraus der
komplette Name. Dann wird anhand des Namens in den verschiedenen Listen
nach den Werten gesucht. Das klappt alles hervorragend.
Nun soll aber nicht für alle 50 Kollegen das Kürzel von Hand eingetragen
und dann der Druck veranlasst werden, sondern ich benötige eine
Schaltfläche, die dafür sorgt, dass nacheinander alle Kürzel auf dem
Blatt eingetragen werden dann der Druck veranlasst wird und dann zum
nächsten Kollegen gesprungen wird.
teste mal folgenden Code. Falls die Berechnung nach Eintrag in B5 länger
dauert, müsste vielleicht noch eine kurze Wartezeit eingebaut werden.
Bei diesem Code lasse ich zuerst die Zeilenanzahl in F berechnen,
dadurch läuft es immer korrekt, auch wenn jemand dazu kommt oder weg
fällt.
Sub ListenAusdruck()
Dim LRow As Long
Dim rngC As Range
With Sheets("Listen")
LRow = .Cells(.Rows.Count, "F").End(xlUp).Row
For Each rngC In .Range("F2:F" & LRow)
Sheets("Druck").Range("B5") = rngC
Sheets("Druck").PrintOut
Next
End With
End Sub
Mit freundlichen Grüßen
Claus Busch
Claus Busch
2013-06-20 17:46:25 UTC
Permalink
Hallo Maria,
Post by Maria Brümmer
Hallo Claus, es klappt super - Danke.
Schade, dass ich so wenig davon verstehe, um das selber zu erstellen.
freut mich, dass es läuft. Danke für die Rückmeldung.


Mit freundlichen Grüßen
Claus Busch
--
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3
Maria Brümmer
2013-06-26 18:51:42 UTC
Permalink
Hallo Claus - ich habe da noch eine Frage:

Kann man in der Abfolge auch eine Nachfrage nach dem zu wendenden
Drucker einfügen? - oder - wenn das nicht geht auf einen bestimmten
Drucker (z. B. PDF-Drucker) verweisen?

Danke - Maria
Claus Busch
2013-06-26 19:16:18 UTC
Permalink
Hallo Maria,
Post by Maria Brümmer
Kann man in der Abfolge auch eine Nachfrage nach dem zu wendenden
Drucker einfügen? - oder - wenn das nicht geht auf einen bestimmten
Drucker (z. B. PDF-Drucker) verweisen?
Abfragen kannst du den aktiven Drucker mit:
Application.ActivePrinter
Du kannst auch z.B. zuweisen:
Application.ActivePrinter = "HP Officejet hoch auf Ne04:"
Welches der Anschluss des gewünschten Druckers ist kannst du ermitteln,
mit Application.ActivePrinter, wenn es der Standarddrucker ist, sonst
indem du ein Makro aufzeichnest während du den Drucker wechselst.


Mit freundlichen Grüßen
Claus Busch
--
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3
Maria Brümmer
2013-06-26 19:35:43 UTC
Permalink
Hallo Claus - an welcher Stelle des Makros muss die Zeile eingefügt werden?

Maria
Post by Claus Busch
Hallo Maria,
Post by Maria Brümmer
Kann man in der Abfolge auch eine Nachfrage nach dem zu wendenden
Drucker einfügen? - oder - wenn das nicht geht auf einen bestimmten
Drucker (z. B. PDF-Drucker) verweisen?
Application.ActivePrinter
Application.ActivePrinter = "HP Officejet hoch auf Ne04:"
Welches der Anschluss des gewünschten Druckers ist kannst du ermitteln,
mit Application.ActivePrinter, wenn es der Standarddrucker ist, sonst
indem du ein Makro aufzeichnest während du den Drucker wechselst.
Mit freundlichen Grüßen
Claus Busch
Claus Busch
2013-06-26 19:41:06 UTC
Permalink
Hi Maria,
Post by Maria Brümmer
Hallo Claus - an welcher Stelle des Makros muss die Zeile eingefügt werden?
die Zuweisung eines Druckers? Sie muss nur vor der Anweisung PrintOut
kommen. Am Besten also du stellst sie ganz an den Anfang des Codes, also
vor With Sheets("Listen").


Mit freundlichen Grüßen
Claus Busch
--
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3
Claus Busch
2013-06-26 19:44:38 UTC
Permalink
Hallo Maria,
Post by Claus Busch
die Zuweisung eines Druckers? Sie muss nur vor der Anweisung PrintOut
kommen. Am Besten also du stellst sie ganz an den Anfang des Codes, also
vor With Sheets("Listen").
noch ein kleiner Hinweis: Die Druckeranschlüsse sind PC-spezifisch. Wenn
du also einen Netzwerkdrucker hast, kannst du mit den bei dir gefundenen
Einstellungen nur bei dir den Drucker ändern bzw. das Makro läuft nur
bei dir korrekt. Bei anderen PCs musst du deren Einstellung verwenden.


Mit freundlichen Grüßen
Claus Busch
--
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3
Maria Brümmer
2013-06-26 19:58:04 UTC
Permalink
Hallo Claus - ich habe jetzt folgendes Makro:

Sub ListenAusdruck()
Dim LRow As Long
Dim rngC As Range
Application.ActivePrinter
With Sheets("Listen")
LRow = .Cells(.Rows.Count, "F").End(xlUp).Row
For Each rngC In .Range("F2:F" & LRow)

Sheets("Druck").Range("B5") = rngC
Sheets("Druck").PrintOut

Next
End With
End Sub


Aber dann kommt die Fehlermeldung:
Fehler bei Kompilieren
Unzulässige Verwendung einer Eigenschaft.

Was ist dort falsch?

Maria
Post by Claus Busch
Hallo Maria,
Post by Claus Busch
die Zuweisung eines Druckers? Sie muss nur vor der Anweisung PrintOut
kommen. Am Besten also du stellst sie ganz an den Anfang des Codes, also
vor With Sheets("Listen").
noch ein kleiner Hinweis: Die Druckeranschlüsse sind PC-spezifisch. Wenn
du also einen Netzwerkdrucker hast, kannst du mit den bei dir gefundenen
Einstellungen nur bei dir den Drucker ändern bzw. das Makro läuft nur
bei dir korrekt. Bei anderen PCs musst du deren Einstellung verwenden.
Mit freundlichen Grüßen
Claus Busch
Claus Busch
2013-06-26 20:01:25 UTC
Permalink
Hallo Maria,
Post by Maria Brümmer
Fehler bei Kompilieren
Unzulässige Verwendung einer Eigenschaft.
den Wert musst du irgendwie zurückgeben, z.B. mit einer MsgBox:
Sub ListenAusdruck()
Dim LRow As Long
Dim rngC As Range

MsgBox Application.ActivePrinter
With Sheets("Listen")
LRow = .Cells(.Rows.Count, "F").End(xlUp).Row
For Each rngC In .Range("F2:F" & LRow)

Sheets("Druck").Range("B5") = rngC
Sheets("Druck").PrintOut

Next
End With
End Sub


Mit freundlichen Grüßen
Claus Busch
--
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3
Maria Brümmer
2013-06-26 20:23:20 UTC
Permalink
Bei diesem Makro wird der Standart-Drucker abgefragt, aber ich habe
keine Wahl einen anderen Drucker zu wählen. Gibt's da auch einen Befehl?

Maria
Post by Claus Busch
Sub ListenAusdruck()
Dim LRow As Long
Dim rngC As Range
MsgBox Application.ActivePrinter
With Sheets("Listen")
LRow = .Cells(.Rows.Count, "F").End(xlUp).Row
For Each rngC In .Range("F2:F" & LRow)
Sheets("Druck").Range("B5") = rngC
Sheets("Druck").PrintOut
Next
End With
End Sub
Claus Busch
2013-06-26 20:27:35 UTC
Permalink
Hallo Maria,
Post by Maria Brümmer
Bei diesem Makro wird der Standart-Drucker abgefragt, aber ich habe
keine Wahl einen anderen Drucker zu wählen. Gibt's da auch einen Befehl?
dann probiere es so (den Namen und den Anschluss deines gewünschten
Druckers musst du bei dir testen):
Sub ListenAusdruck()
Dim LRow As Long
Dim rngC As Range

Application.ActivePrinter = "HP Officejet normal auf Ne03:"
With Sheets("Listen")
LRow = .Cells(.Rows.Count, "F").End(xlUp).Row
For Each rngC In .Range("F2:F" & LRow)

Sheets("Druck").Range("B5") = rngC
Sheets("Druck").PrintOut

Next
End With
End Sub


Mit freundlichen Grüßen
Claus Busch
--
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3
Maria Brümmer
2013-06-26 20:40:30 UTC
Permalink
Hallo Claus - da ich das Makro für meinen Abteilungsleiter schreibe,
wäre eine Auswahl an Drucker sinnvoll - oder wenn nicht möglich - eine
Möglichkeit zum Abbrechen, wenn der falsche Drucker aktiv ist.

Maria
Post by Claus Busch
Hallo Maria,
Post by Maria Brümmer
Bei diesem Makro wird der Standart-Drucker abgefragt, aber ich habe
keine Wahl einen anderen Drucker zu wählen. Gibt's da auch einen Befehl?
dann probiere es so (den Namen und den Anschluss deines gewünschten
Sub ListenAusdruck()
Dim LRow As Long
Dim rngC As Range
Application.ActivePrinter = "HP Officejet normal auf Ne03:"
With Sheets("Listen")
LRow = .Cells(.Rows.Count, "F").End(xlUp).Row
For Each rngC In .Range("F2:F" & LRow)
Sheets("Druck").Range("B5") = rngC
Sheets("Druck").PrintOut
Next
End With
End Sub
Mit freundlichen Grüßen
Claus Busch
Claus Busch
2013-06-26 20:57:17 UTC
Permalink
Hallo Maria,
Post by Maria Brümmer
Hallo Claus - da ich das Makro für meinen Abteilungsleiter schreibe,
wäre eine Auswahl an Drucker sinnvoll - oder wenn nicht möglich - eine
Möglichkeit zum Abbrechen, wenn der falsche Drucker aktiv ist.
bei Michael Schwimmer kannst du ein Makro runterladen, das dir alle
Drucker mit den Anschlüssen auflistet. Die gewünschten könntest du dann
einbauen.
Du könntest nur Drucken lassen, wenn der gewünschte Drucker gewählt ist,
sonst bricht das Makro die Ausführung ab:

Sub ListenAusdruck2()
Dim LRow As Long
Dim rngC As Range

If MsgBox(Application.ActivePrinter, vbOKCancel + vbCritical, _
"Druckerabfrage") = vbOK Then
With Sheets("Listen")
LRow = .Cells(.Rows.Count, "F").End(xlUp).Row
For Each rngC In .Range("F2:F" & LRow)

Sheets("Druck").Range("B5") = rngC
Sheets("Druck").PrintOut

Next
End With
End If
End Sub

Oder du könntest abbrechen, wenn der eingestellte Drucker nicht der
gewünschte ist:

Sub ListenAusdruck3()
Dim LRow As Long
Dim rngC As Range

If Application.ActivePrinter = "HP Officejet normal auf Ne03:" _
Then Exit Sub
With Sheets("Listen")
LRow = .Cells(.Rows.Count, "F").End(xlUp).Row
For Each rngC In .Range("F2:F" & LRow)

Sheets("Druck").Range("B5") = rngC
Sheets("Druck").PrintOut

Next
End With
End Sub


Mit freundlichen Grüßen
Claus Busch
--
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3
Claus Busch
2013-06-26 20:58:20 UTC
Permalink
Hallo Maria,
Post by Claus Busch
bei Michael Schwimmer kannst du ein Makro runterladen, das dir alle
Drucker mit den Anschlüssen auflistet. Die gewünschten könntest du dann
einbauen.
sorry, hab den Link dazu vergessen:
http://michael-schwimmer.de/vba009.htm


Mit freundlichen Grüßen
Claus Busch
--
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3
Maria Brümmer
2013-06-26 21:19:42 UTC
Permalink
Hallo Claus - ich wähle die Version, in der ich abbrechen kann, alles
andere ist mir zu kompliziert. Aber das Abbrechen ist schon eine große
Hilfe.

Maria
Post by Claus Busch
Hallo Maria,
Post by Claus Busch
bei Michael Schwimmer kannst du ein Makro runterladen, das dir alle
Drucker mit den Anschlüssen auflistet. Die gewünschten könntest du dann
einbauen.
http://michael-schwimmer.de/vba009.htm
Mit freundlichen Grüßen
Claus Busch
Claus Busch
2013-06-27 06:45:27 UTC
Permalink
Hallo Maria,
Post by Maria Brümmer
Hallo Claus - ich wähle die Version, in der ich abbrechen kann, alles
andere ist mir zu kompliziert. Aber das Abbrechen ist schon eine große
Hilfe.
wenn dein Chef unter 3 Druckern wählen möchte, könntest du das Makro
kopieren und 3 Mal in die Mappe einfügen. Verpasse ihnen einen
aussagekräftigen Namen und weise in jedem Makro explizit den Drucker zu,
z.B. mit
Application.ActivePrinter = "HP Officejet normal auf Ne03:"und gib
diesem Makro den Namen
Sub ListenAusdruck_auf_HP()
Dein Chef kann dann das Makro je nach gewünschtem Drucker auswählen.


Mit freundlichen Grüßen
Claus Busch
--
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3
Maria Brümmer
2013-06-27 08:00:58 UTC
Permalink
Danke für Deine Mühe - ich werde es nach den Ferien ausprobieren.

Gruß - Maria
Post by Claus Busch
Hallo Maria,
Post by Maria Brümmer
Hallo Claus - ich wähle die Version, in der ich abbrechen kann, alles
andere ist mir zu kompliziert. Aber das Abbrechen ist schon eine große
Hilfe.
wenn dein Chef unter 3 Druckern wählen möchte, könntest du das Makro
kopieren und 3 Mal in die Mappe einfügen. Verpasse ihnen einen
aussagekräftigen Namen und weise in jedem Makro explizit den Drucker zu,
z.B. mit
Application.ActivePrinter = "HP Officejet normal auf Ne03:"und gib
diesem Makro den Namen
Sub ListenAusdruck_auf_HP()
Dein Chef kann dann das Makro je nach gewünschtem Drucker auswählen.
Mit freundlichen Grüßen
Claus Busch
Loading...