vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Excel   |   VB-Versionen: VBA06.07.04
WorkAfterPrint-Ereignis in Excel

Ergänzt das Excel Applikations Objekt um ein WorkbookAfterPrint Ereignis

Autor:   Mark BolandBewertung:     [ Jetzt bewerten ]Views:  15.534 
www.data-object.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11kein Beispielprojekt 

Es gibt im Excel-Application-Object ein WorkbookBeforePrint-Ereignis. Dieses wird ausgelöst, wenn man in die Vorschau-Ansicht, direkt in den Druck oder aber in den Druckdialog geht. Die Vorschau und den Druckdialog kann man aber auch mit "Abbrechen" verlassen, und somit weiss man im Nachhinein nicht, ob gedruckt wurde oder nicht und wann. Ein WorkbookAfterPrint-Ereignis, was bei einem echten Druck ausgelöst wird, wäre also wesentlich besser.

Dazu die beiliegende Klasse clsExcelAfterPrint, s.u.

Starten. Die Klasse braucht noch ein Form-Objekt mit einem Timer-Control und ein instanziertes Excel. Beide werden der Klasse zugewiesen. PrintWatch.Start startet die Excel-Überwachung und liefert das Ereignis. Nach PrintWatch.StopIt wird auch das Ereignis nicht mehr geliefert.

Beipiel:

Dim WithEvents PrintWatch As clsExcelAfterPrint
...
...
...
Set objExcel = CreateObject("Excel.Application", "")
...    
Set PrintWatch = New clsExcelAfterPrint
Set PrintWatch.objApp = objExcel
Set PrintWatch.objTimer = formMain.TimerPrintWatch
...
...
...
PrintWatch.Start
 
' In diesem Zeitraum wird das Ereignis geliefert
 
PrintWatch.StopIt  ' Ab hier dann nicht mehr
Private Sub PrintWatch_WorkbookAfterPrint()
  PrintWatch.StopIt
  ' Mache dies und das, und weiter
 
  PrintWatch.Start
End Sub

Das Klassenmodul clsExcelAfterPrint

' -----------------------------------------
' clsExcelAfterPrint
' -----------------------------------------
 
Dim LastPrintDate As Date
Dim BeforePrintDate As Date
Dim ModeStart As Boolean
 
Public WithEvents objApp As excel.Application
Public WithEvents objTimer As Timer
 
Public Event WorkbookAfterPrint()
Public Sub Start()
  ' Timer aus, Interval 3 Sekunden
  ModeStart = True
  objTimer.Enabled = False
  objTimer.Interval = 3000
  BeforePrintDate = CDate("01.01.1900")
End Sub
Public Sub StopIt()
  ModeStart = False
End Sub
Private Sub objApp_NewWorkbook(ByVal Wb As excel.Workbook)
  BeforePrintDate = CDate("01.01.1900")
End Sub
Private Sub objApp_WorkbookBeforePrint( _
  ByVal Wb As excel.Workbook, Cancel As Boolean)
 
  If ModeStart = True Then
    ' Eine Sekunde abziehen falls der Druck unter eine Sekunde dauert
    BeforePrintDate = DateAdd("s", -1, Now)
    objTimer.Enabled = True
  End If
End Sub
Private Function GetLastPrintDate() As Date
  On Error GoTo Fehler
 
  ' Letztes Druckdatum merken
  With objApp.ActiveWorkbook
    ' Index 10
    GetLastPrintDate = .BuiltinDocumentProperties("Last print date")
  End With  
  Exit Function
 
Fehler:
  ' Wenn Fehler, dann war Druckdatum leer. 
  ' Dann auf Vergangenheit setzen.
  GetLastPrintDate = Now - 1
End Function
Private Sub objApp_WorkbookOpen(ByVal Wb As excel.Workbook)
  BeforePrintDate = CDate("01.01.1900")
End Sub
Private Sub objTimer_Timer()
  If Not (BeforePrintDate = CDate("01.01.1900")) Then
    If GetLastPrintDate > BeforePrintDate Then
      ' Timer aus, Datum Init und Event abschicken
      objTimer.Enabled = False
      BeforePrintDate = CDate("01.01.1900")
      RaiseEvent WorkbookAfterPrint
    End If
  End If
End Sub

Dieser Tipp wurde bereits 15.534 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Aktuelle Diskussion anzeigen (2 Beiträge)

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel