Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

wurde gedruckt?

Betrifft: wurde gedruckt? von: Johann
Geschrieben am: 24.09.2020 11:26:07

Hallo zusammen,

wenn man die Druckansicht aufruft, dann wird

ActiveWorkbook.BuiltinDocumentProperties("Last print date").Value

gesetzt. Ich würde gerne wissen, ob das Dokument nun gedruckt wurde, oder nicht.

Gibt es da eine Möglichkeit?


Grüße

Hans

Betrifft: AW: wurde gedruckt?
von: Nepumuk
Geschrieben am: 24.09.2020 12:28:28

Hallo Hans,

da weder das aufrufen der Druckansicht, noch der Klick auf den Button "Drucken" ein verwertbares Event in Excel auslösen, sehe ich da schwarz.

Gruß
Nepumuk

Betrifft: AW: wurde gedruckt?
von: max.kaffl@gmx.de
Geschrieben am: 24.09.2020 16:06:26

Hallo Hans,

jetzt ist mir gerade was eingefallen. Teste mal:

Im Modul "DieseArbeitsmappe":

Private Sub Workbook_BeforePrint(Cancel As Boolean)
    MsgBox "Print"
End Sub

Gruß
Nepumuk

Betrifft: AW: wurde gedruckt?
von: Johann
Geschrieben am: 24.09.2020 19:04:47

Hallo Nepumuk,
in welches Modul soll ich das reinpacken?
Durch wen, oder was soll diese Sub aufgerufen werden?

Danke im Voraus fpr Deine Antwort.

Grüße
Hans

Betrifft: AW: wurde gedruckt?
von: Hajo_Zi
Geschrieben am: 24.09.2020 19:07:05

Halo Hans,

lese den Beitrag komplett.

Im Modul "DieseArbeitsmappe":

GrußformelHomepage

Betrifft: AW: wurde gedruckt?
von: Nepumuk
Geschrieben am: 24.09.2020 19:15:36

Hallo Hans,

das ist eine Event-Routine die durch das Drucken ausgelöst wird.

Die muss in das Modul "DieseArbeitsmappe".

Gruß
Nepumuk

Betrifft: AW: wurde gedruckt?
von: Daniel
Geschrieben am: 24.09.2020 19:16:20

Soweit ich mich erinnern kann, wird das aus der gleichen Situation getriggert wie die BuiltInProperty, nämlich schon vor dem erstellen der Druckvorschau (Ist ja auch notwendig, denn sonst würde die Druckvorschau ja u.U ein falsches Ergebnis liefern)
Auch vor einem SpeichernUnter als PDF muss dieses Makro laufen, dh. feststellen, ob tatsächlich was an den Drucker geschickt wurde, kann man damit nicht.
Gruß Daniel

Betrifft: AW: wurde gedruckt?
von: Johann
Geschrieben am: 24.09.2020 22:47:40

Danke an alle.

Es klappt nicht. Es lässt sich nicht unterscheiden zwischen Druckvorschau mit, oder ohne nachfolgendem Ausdruck.

Schade, aber danke für Eure Mühe.

Grüße
Hans

Betrifft: AW: wurde gedruckt?
von: Nepumuk
Geschrieben am: 25.09.2020 11:09:06

Hallo Hans,

bei mir wird die Event-Prozedur nur ausgelöst wenn ich wirklich drucke, nicht durch die Seitenansicht. Du kannst ja eine eigene Property anlegen in der du das Datum des Drucks einträgst.

Im Modul "DieseArbeitsmappe":

Option Explicit

Private Sub Workbook_BeforePrint(Cancel As Boolean)
    Dim objDocumentProperty As DocumentProperty
    For Each objDocumentProperty In CustomDocumentProperties
        If objDocumentProperty.Name = PRINT_DATE Then Exit For
    Next
    If objDocumentProperty Is Nothing Then
        Call CustomDocumentProperties.Add(Name:="PrintDate", _
            LinkToContent:=False, Type:=msoPropertyTypeDate, Value:=Now)
    Else
        objDocumentProperty.Value = Now
        Set objDocumentProperty = Nothing
    End If
End Sub

In einem Standardmodul (Menüleiste - Einfügen - Modul):

Option Explicit

Public Const PRINT_DATE As String = "PrintDate"

Public Sub GetLastPrintDate()
    Dim objDocumentProperty As DocumentProperty
    For Each objDocumentProperty In ThisWorkbook.CustomDocumentProperties
        If objDocumentProperty.Name = PRINT_DATE Then Exit For
    Next
    If objDocumentProperty Is Nothing Then
        Call MsgBox("Dokument wurde noch nicht gedruckt.", vbExclamation, "Hinweis")
    Else
        Call MsgBox(Format$(objDocumentProperty.Value, "dd.mm.yyyy Hh:Nn:Ss"), vbInformation, "Information")
        Set objDocumentProperty = Nothing
    End If
End Sub

Gruß
Nepumuk

Betrifft: AW: wurde gedruckt?
von: Nepumuk
Geschrieben am: 25.09.2020 11:25:18

Hallo Hans,

in der Event-Prozedur ist der Property-Name noch hart codiert. Daher:

Option Explicit

Private Sub Workbook_BeforePrint(Cancel As Boolean)
    Dim objDocumentProperty As DocumentProperty
    For Each objDocumentProperty In CustomDocumentProperties
        If objDocumentProperty.Name = PRINT_DATE Then Exit For
    Next
    If objDocumentProperty Is Nothing Then
        Call CustomDocumentProperties.Add(Name:=PRINT_DATE, _
            LinkToContent:=False, Type:=msoPropertyTypeDate, Value:=Now)
    Else
        objDocumentProperty.Value = Now
        Set objDocumentProperty = Nothing
    End If
End Sub

Gruß
Nepumuk

Beiträge aus dem Excel-Forum zum Thema "wurde gedruckt?"