AW: Noch eine Frage
20.09.2007 15:11:44
fcs
Hallo Christian,
ich hab die Drucker auswahl eingebaut, du muss nur die korrekten Bezeichnungen der Drucker auf deinem System eintragen. Hierzu einfach ein Makro aufzeichnen, bei dem du über das Menü Datei--Drucken... im Dialog den Drucker wechselst, Dialog schließen und dies dann für alle Drucker wiederholen.
Der PDF-Creator wird wahrscheinlich für jede Seite eine eigene Datei erzeugen, da jede Seite ein eigener Druckjob ist.
MfG
Franz
Sub drucken()
Dim i&, k%, block%, s%, z&, zbl%, Test&, Drucker$, DruckerMerken$
Dim myHeader As String
Test = MsgBox("Drucken? Ja = Bereich Material, Nein = Bereich Lohn", _
vbQuestion + vbYesNoCancel, "Drucken Tabelle 2")
If Test = vbCancel Then Exit Sub
Drucker = InputBox("Bitte Drucker auswählen:" & vbLf _
& "0 = aktueller Drucker (" & Application.ActivePrinter & ")" & vbLf _
& "1 = Brother MFC 9030 " & vbLf _
& "2 = PDF-Creator" & vbLf, "Druckerauswahl", 0)
MerkenDrucker = Application.ActivePrinter
Select Case Drucker
Case "0"
'do nothing
Case "1"
Application.ActivePrinter = "HP LaserJet 4 auf LPT1:" '###DruckerName anpassen
Case "2"
Application.ActivePrinter = "Adobe PDF auf Ne01:" '###PDF Drucker anpassen
Case Else
If MsgBox("Druckerauswahl nicht korrekt!" & vbLf _
& "auf aktivem Drucker (" & Application.ActivePrinter & ") drucken?", _
vbOKCancel, "Druckerauswahl") = vbCancel Then
Exit Sub
End If
End Select
With Worksheets("Tabelle2").PageSetup
myHeader = ""
For i = 4 To 9
If i > 4 Then myHeader = myHeader & vbCr
For k = 1 To 3
If k = 3 Then myHeader = myHeader & Worksheets("Tabelle2").Cells(i, k)
If k 3 Then myHeader = myHeader & Worksheets("Tabelle2").Cells(i, k) & " - "
Next k
Next i
.Orientation = xlPortrait
.Zoom = False
.FitToPagesTall = 1
.FitToPagesWide = 1
.LeftHeader = "&" & Chr(34) & "Arial" & Chr(34) & "&10" & myHeader
.TopMargin = 150
If Test = vbYes Then
i = 20 'Startzeile für Druckbereich
block = 5 'Blöcke
zbl = 17 'Zeilen pro Block
For s = 1 To Application.WorksheetFunction.RoundUp((Worksheets("Tabelle2"). _
Range("y65536").End(xlUp).Row + 1 - i) / (block * zbl), 0)
z = Application.WorksheetFunction.Min(Worksheets("Tabelle2").Range("y65536"). _
_
End(xlUp).Row + 1, i + block * zbl - 1)
.RightFooter = "Seite " & s
.PrintArea = Worksheets("Tabelle2").Range("L" & i & ":Y" & z).Address
' Worksheets("Tabelle2").PrintPreview
Worksheets("Tabelle2").PrintOut
i = i + block * zbl
Next s
Else
i = 20 'Startzeile für Druckbereich
block = 5 'Blöcke
zbl = 17 'Zeilen pro Block
For s = 1 To Application.WorksheetFunction.RoundUp((Worksheets("Tabelle2"). _
Range("an65536").End(xlUp).Row + 1 - i) / (block * zbl), 0)
z = Application.WorksheetFunction.Min(Worksheets("Tabelle2").Range("an65536"). _
_
End(xlUp).Row + 1, i + block * zbl - 1)
.RightFooter = "Seite " & s
.PrintArea = Worksheets("Tabelle2").Range("aa" & i & ":an" & z).Address
Worksheets("Tabelle2").PrintPreview
' Worksheets("Tabelle2").PrintOut
i = i + block * zbl
Next s
End If
End With
'Drucker auf vorherige Auswahl zurücksetzen
Application.ActivePrinter = MerkenDrucker
End Sub