Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1184to1188
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

Druckaufträge in Paketen abschicken

Druckaufträge in Paketen abschicken
Mark
Hallo Zusammen,
mein aktuelles Projekt ist ein Etikettendruckprogrämmchen, welches mir einzelne Sheets auf Knopfdruck bis zu 1800x ausdrucken soll. Soweit funktioniert auch alles, allerdings ist es aktuell so, dass der Drucker dann nich 1x1800 sondern 1800x1 Druckaufträge erhält und weder Windows noch der Drucker da richtig mit klarkommen.
Gibt es die Möglichkeit die Druckaufträge in 50er Paketen oder sogar als ein 1800 Paket zuschicken?
Danke im Voraus
LG
Mark
Wie sieht dein Druck-Code aus ? (owT)
18.11.2010 12:03:08
Renee

AW: Druckaufträge in Paketen abschicken
18.11.2010 12:05:06
Christian
Hallo Mark
Klar, wenn du 1800 mal Sheet drucken sagst dann hast du 1800 Druckazfträge.
Eine Möglichkeit:
kopiere den relevanten Bereich der Tabelle 1800 mal untereinander in eine neue Tabelle. richte hier die Seite ein und drucke diese.
Gruß
Christian
AW: Druckaufträge in Paketen abschicken
18.11.2010 14:12:00
Mark
Hi,
so sieht mein Druckcode aus. Ich wähle also das Sheet aus, welches ich drucken will und komm dann hierzu...
Anzahl = Worksheets("Start").Range("D12")
If Anzahl >= 50 Then
Druckerzähler1 = Int(Anzahl / 50)
Druckerzähler2 = 50
Anzahl = Anzahl - (Druckerzähler1 * 50)
Druckerzähler3 = Anzahl
Else
Druckerzähler3 = Anzahl
GoTo Direktdruck
End If
For i = 1 To Druckerzähler1
ExecuteExcel4Macro "PRINT(1,,," & Druckerzähler2 & ",,,,,,,,2,,,TRUE,,FALSE)"
Next i
Direktdruck:
If Druckerzähler3 = 0 Then GoTo Ende:
ExecuteExcel4Macro "PRINT(1,,," & Druckerzähler3 & ",,,,,,,,2,,,TRUE,,FALSE)"
Ist der Code abwägig um 50er Pakete zuschicken oder fehlt vielleicht nur ein kleiner Kniff zum Glück?
In Word komme ich über diesen Code zum gewünschen Ergebnis, allerdings soll es jetzt in Excel umgesetzt werden:
For i = 1 To 36
Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
wdPrintDocumentContent, Copies:=50, Pages:="", PageType:=wdPrintAllPages, _
ManualDuplexPrint:=False, Collate:=False, Background:=True, PrintToFile:= _
False, PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=7371, _
PrintZoomPaperHeight:=5897
Next
Danke im Voraus
Anzeige
AW: Druckaufträge in Paketen abschicken
18.11.2010 19:26:54
Christian
Ich bin kein Experte, was das Drucken angeht.
Man kann zB. alle ausgewählten Tabellen drucken.
mal stumpf mit dem recorder aufgezeichnet:
Sub Makro1()
Sheets(Array("Tabelle1", "Tabelle12")).Select
Sheets("Data").Activate
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End Sub
HTH
Christian
AW: Druckaufträge in Paketen abschicken
19.11.2010 09:13:47
Mark
Hi,
ändert bei mir nichts. Wenn ich den Wert auf 50 ändere, macht er da leider 50 Druckaufträge von.
Hat noch jemand eine Idee?
Gruß Malte
AW: Druckaufträge in Paketen abschicken
19.11.2010 23:53:50
fcs
Hallo Malto,
Excel arbeitet halt so, das Kopien als separate Druckjobs behandelt werden.
Die Alternative besteht darin fürs Drucken eine temporäre Datei zu erzeugen mit einem Tabellenblatt mit 50 Labelseiten.
Dies kann man dann entsprechend oft drucken.
Nachfolgend ein Beispiel, dass aber noch mit der Seitenvorschau arbeitet, um beim Probieren Papier zu sparen.
Gruß
Franz
Sub DruckenLabels_AktivesBlatt()
Dim intI As Integer, Druckerzähler1&, Druckerzähler2&, Druckerzähler3&, Anzahl&
Dim wbNeu As Workbook, wksNeu As Worksheet, wksAktiv As Worksheet
Dim Zeilen As Long, rngData As Range, Zeile As Long
Anzahl = Worksheets("Start").Range("D12")
Druckerzähler2 = 50 'Anzahl Seiten pro Druckjob
Set wksAktiv = ActiveSheet
With wksAktiv
Zeilen = wksAktiv.Cells.SpecialCells(xlCellTypeLastCell).Row
Set rngData = .Range(.Rows(1), .Rows(Zeilen))
End With
If Anzahl >= Druckerzähler2 Then
wksAktiv.Copy
Set wbNeu = ActiveWorkbook
Set wksNeu = wbNeu.Worksheets(1)
Druckerzähler1 = Int(Anzahl / Druckerzähler2)
Application.ScreenUpdating = False
With wksNeu
For intI = 1 To Druckerzähler2 - 1
Zeile = 1 + intI * Zeilen
.HPageBreaks.Add .Cells(Zeile, 1)
rngData.Copy .Cells(Zeile, 1)
Next
End With
Application.ScreenUpdating = True
Anzahl = Anzahl - (Druckerzähler1 * Druckerzähler2)
Druckerzähler3 = Anzahl
For intI = 1 To Druckerzähler1
'          wksNeu.PrintOut Copies:=1
wksNeu.PrintPreview
Next intI
wbNeu.Close savechanges:=False
Else
Druckerzähler3 = Anzahl
End If
If Druckerzähler3 > 0 Then
wksAktiv.Copy
Set wbNeu = ActiveWorkbook
Set wksNeu = wbNeu.Worksheets(1)
Application.ScreenUpdating = False
With wksNeu
For intI = 1 To Druckerzähler3 - 1
Zeile = 1 + Druckerzähler1 * Zeilen
.HPageBreaks.Add .Cells(Zeile, 1)
rngData.Copy .Cells(Zeile, 1)
Next
End With
Application.ScreenUpdating = True
'      wksNeu.PrintOut Copies:=1
wksNeu.PrintPreview
wbNeu.Close savechanges:=False
End If
MsgBox "Fertig", vbInformation + vbOKOnly, "Label-Drucken"
End Sub

Anzeige
AW: Druckaufträge in Paketen abschicken
22.11.2010 14:05:45
Mark
Hi Franz,
das Prinzip ist mir jetzt klar und es würde so auch mit einem Text-Etikett funktionieren. Das Problem ist jetzt noch, dass es ein JPG ist wo noch ein Textfeld mit wechselnden Information rauf. Effekt dieses Makros ist jetzt, dass er das JPG und das Textfeld 50x übereinander in eine neue Datei legt. Kann ich in den Eigenschaften des JPGs Einstellungen vornehmen, damit er die nicht übereinander legt? sondern untereinander?
Danke für eure Mühe!!!
Gruß Malte
AW: Druckaufträge in Paketen abschicken
24.11.2010 07:58:44
fcs
Hallo Malte,
mit Jürgens Vorschlag vereinfacht sich das Makro zu:
Sub DruckenLabels_AktivesBlatt()
Dim intI As Integer, Druckerzähler1&, Druckerzähler2&, Druckerzähler3&, Anzahl&
Dim wbNeu As Workbook, wksNeu As Worksheet, wksAktiv As Worksheet
Dim Zeilen As Long, rngData As Range, Zeile As Long
Anzahl = Worksheets("Start").Range("D12")
Druckerzähler2 = 50 'Anzahl Seiten pro Druckjob
Set wksAktiv = ActiveSheet
With wksAktiv
If Anzahl >= Druckerzähler2 Then
Druckerzähler1 = Int(Anzahl / Druckerzähler2)
Anzahl = Anzahl - (Druckerzähler1 * Druckerzähler2)
Druckerzähler3 = Anzahl
For intI = 1 To Druckerzähler1
.PrintOut Copies:=Druckerzähler2, collate:=False
Next intI
Else
Druckerzähler3 = Anzahl
End If
If Druckerzähler3 > 0 Then
.PrintOut Copies:=Druckerzähler3, collate:=False
End If
End With
MsgBox "Fertig", vbInformation + vbOKOnly, "Label-Drucken"
End Sub

Gruß
Franz
Anzeige
AW: Druckaufträge in Paketen abschicken
23.11.2010 17:12:40
Jürgen
Hallo Malte,
Du erhältst nur einen Druckauftrag, wenn Du Collate:=False setzt. Damit erfolgt der Ausdruck nicht mehr sortiert (Seite 1, Seite 2, Seite 3 in dieser Reihenfolge x-mal hintereinander), sondern gruppiert (x-mal Seite 1, dann x-mal Seite 2 etc.).
Nur so nebenbei: wäre es nicht effizienter, den Ausdruck nur einmal zu starten und das Vervielfältigen einem leistungsstarken Kopierer zu überlassen?
Gruß, Jürgen

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige