Ich bin mir nicht sicher ob ich deine Fragestellung so interpretieren soll, wie sie geschrieben steht. Falls du wirklich EINE TABELLE (Worksheet) hast, die eben beim Drucken über mehrere Seiten geht weil sie so viele Daten enthält, so hast du ein dezentes Problem.
Da im Objektmodell von Excel, zumindest in diesem Zusammenhang, keine Seiten vorkommen, kannst du auch keine Änderungen an Seiten abfragen. Allerdings kenne ich auch für die vorhandenen Objekte in Excel keine Möglichkeit, eine Änderung seit dem letzten Öffnen abzufragen. Man könnte sich in diesem Fall am ehesten damit behelfen, die Zeilennummern von geänderten Zellen mitzuloggen. Beim Ausdrucken müsste man dann allerdings wieder mit den PageBreaks herumhantieren um die zu den geänderten Zeilen gehörigen Seiten herauszubekommen. Dann könnte man diese als Druckbereich definieren und den Druck starten.
Falls du allerdings EINE ARBEITSMAPPE (Workbook) mit mehreren Tabellen (Worksheets) hast, so ist das Problem eher nicht so aufregend. In diesem Fall musst du nur die geänderten Sheets mitloggen und dann für diese das Drucken auslösen. Das liesse sich mit folgendem Code in der Arbeitsmappe (Workbook) bewerkstelligen:
---------------------------------------------------------------
Private DirtySheets() As String
Private Sub Workbook_BeforeClose(Cancel As Boolean)
PrintDirtySheets
End Sub
Private Sub Workbook_Open()
ReDim DirtySheets(Me.Worksheets.Count - 1)
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
DirtySheets(Sh.Index - 1) = Sh.Name
End Sub
Public Sub PrintDirtySheets()
Dim Names As String
Dim Answer As Integer
Dim Wsh As Worksheet
For Each SheetName In DirtySheets
If SheetName <> "" Then
If Names <> "" Then
Names = Names & ", " & SheetName
Else
Names = Names & SheetName
End If
End If
Next
If Names <> "" Then
Answer = MsgBox("Die Druckfunktion hat Änderungen in folgenden Sheets festgehalten:" & vbNewLine & vbNewLine & _
Names & vbNewLine & vbNewLine & _
"Sollen diese Sheets gedruckt werden?", _
vbQuestion + vbYesNo, _
"Druckfunktion")
If Answer = vbYes Then
For Each SheetName In DirtySheets
If SheetName <> "" Then
Set Wsh = Worksheets(SheetName)
' Wsh.PrintPreview ' zeigt Druckvorschau
Wsh.PrintOut ' druckt sofort
End If
Next
End If
Else
MsgBox "Die Druckfunktion hat keine Änderungen an Sheets festgehalten.", _
vbInformation + vbOKOnly, _
"Druckfunktion"
End If
End Sub
------------------------------------------------------
|