Druckprobleme
05.03.2017 14:53:14
Daniel
ich habe mal wieder ein "kleines" Problem...
Application.Dialogs(xlDialogPrinterSetup).Show
wird immer nur auf das Active Sheet angewendet und von der Logik her, hat das an anderer Stelle sehr gut funktioniert, wenn ich 1 bestimmtes Sheet mit verschiedenen Inhalten füllen und jeweils drucken will...
ABER:
Jetzt versuche ich eine variable Anzahl an Sheets zu drucken und er nimmt die Einstellungen vom Printer Setup Dialog nur für das in diesem Moment aktive Blatt.
Application.Dialogs(xlDialogPrinterSetup).Show
For i = 1 To ThisWorkbook.Sheets("Runden").Range("$C$2")
Application.StatusBar = "Drucke Runde " & i
ThisWorkbook.Sheets("Runde " & i).Visible = True
ThisWorkbook.Sheets("Runde " & i).Activate
Call DruckFahrliste(ThisWorkbook.Sheets("Runde " & i), True)
ThisWorkbook.Sheets("Runden").Activate
ThisWorkbook.Sheets("Runde " & i).Visible = False
Next i
Sub DruckFahrliste(Quelle As Worksheet, Optional Direktdruck As Boolean)
Dim druckorientierung As Variant
Dim StatusEvents As Boolean
Dim StatusCalc As Long, bolScreen As Boolean
'Makrobremsen lösen
With Application
'Merken von Einstellungen - wichtig,falls dieses Ereignismakro von anderen Makros _
getriggert wird, die die Einstellung schon geändert haben
StatusCalc = .Calculation 'Muss gemerkt werden, da 3 Werte möglich
bolScreen = .ScreenUpdating
StatusEvents = .EnableEvents
If StatusCalc xlCalculationManual Then
.Calculate
.Calculation = xlCalculationManual
End If
If bolScreen = True Then .ScreenUpdating = False
If StatusEvents = True Then .EnableEvents = False
End With
On Error GoTo Fehler 'Diese Zeile in Kommentar umwandeln so lange das Makro entwickelt
'HIER BEGINNT DER EIGENTLICHE CODE
Quelle.Unprotect
Quelle.ResetAllPageBreaks
With Quelle.PageSetup
.RightHeader = "&R&K888888Eigentum ..."
.CenterHeader = "&C&B&I&KFF0000VERTRAULICH&I&B"
.LeftHeader = "&L&I&K888888Stand: " & Format(Now(), "DD.MM.YYYY hh:mm:ss")
.LeftFooter = "&L&K888888Abr. Monat: " & Format(ThisWorkbook.Sheets("Grunddaten").Range( _
_
"$C$13"), "00") & "/" & Format(ThisWorkbook.Sheets("Grunddaten").Range("$C$12"), "0000")
.RightFooter = "&R&K888888Seite &P von &N"
.CenterHorizontally = True
.PrintTitleRows = "$1:$5"
.PrintTitleColumns = "$E:$G"
End With
druckausrichtungalt = Quelle.PageSetup.Orientation
Quelle.PageSetup.Orientation = xlLandscape
Quelle.Range("K:N").EntireColumn.Hidden = True
Quelle.PageSetup.PrintArea = Quelle.Range("E1:O" & (5 + Quelle.Range("G3"))).Address
If Direktdruck = True Then Quelle.PrintOut Else Quelle.PrintPreview
Quelle.PageSetup.Orientation = druckausrichtungalt
Quelle.PageSetup.PrintArea = Range("E1:J50").Address
Quelle.Range("K:N").EntireColumn.Hidden = False
With Quelle.PageSetup
.LeftHeader = "&L&K888888Eigentum...
.CenterHeader = "&C&B&I&KFF0000VERTRAULICH&I&B"
.RightHeader = ""
.LeftFooter = ""
.RightFooter = "&R&K888888Seite &P von &N"
.CenterHorizontally = True
.PrintTitleRows = ""
.PrintTitleColumns = ""
End With
Quelle.Protect
'ENDE DES EIGENTLICHEN CODES
Fehler:
'Fehlerbehandlung
With Err
Select Case .Number
Case 0 'alles OK
Case Else
MsgBox "Fehler-Nr..: " & .Number & vbLf & .Description
End Select
End With
'Makrobremsen zurücksetzen
With Application
If bolScreen .ScreenUpdating Then .ScreenUpdating = bolScreen
If StatusCalc .Calculation Then
.Calculation = StatusCalc
.Calculate
End If
If StatusEvents .EnableEvents Then
.EnableEvents = StatusEvents
End If
End With
End Sub
ich will die Abfrage aber auch nicht für jedes Blatt einzeln machen...ich hoffe jemand kann mir Helfen.
Danke schon einmal im Voraus
Schönen Sonntag noch
Daniel