Anzeige
Archiv - Navigation
1120to1124
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Druck über Buttons erzwingen
Thor
Guten Morgen,
ich möchte erreichen, dass die Formulare in meiner Excel-Datei NUR per eingefügtem Button gedruckt werden können.
Dazu habe ich jetzt per
Private Sub Workbook_BeforePrint(Cancel As Boolean)
MsgBox "Du sollst doch den Druck-Button am Ende der Eingabemaske benutzen :-)"
Cancel = True
End Sub
das Drucken gesperrt.
Doof ist nur, dass dadurch natürlich auch das Drucken per Button gesperrt ist.
Also habe ich versucht, die in Excel vorhandenen Druck-Buttons zu deaktivieren.
Dazu wollte ich:
Application.CommandBars("Worksheet Menu Bar").Controls("Datei").Controls("Drucken...").Enabled = _
False
Application.CommandBars("Standard").Controls("Drucken...").Enabled = False
benutzen (den Code habe ich hier im Forum gefunden).
Leider steh ich grad völlig auf dem Schlauch. Ich weiss nicht, wo und wie genau ich den Code eintrage. Einfach in "vba-Projekt_Diese Arbeitsmappe"? Ohne irgendwelche Zusätze?
Sorry, wenn die Fragen irgendwie dämlich erscheinen, aber ich bin totaler vba-Laie.
Achja, Excel-Version zuhause 2000, auf Arbeit (dort, wo auch die Tabelle laufen soll) 2003.
Danke schonmal
Thor

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Druck über Buttons erzwingen
11.12.2009 09:20:01
Thor
Vielleicht noch als weitere Hintergrundinfo.
Der Druck soll deswegen NUR über den eingefügten CommandButton erfolgen, da ich über diesen die Art und Anzahl der jeweils ausgedruckten Formulare bestimmt habe, z.B. Tab2 3mal und Tab5 2 mal oder Tab4 1mal und Tab 6 5 mal.
AW: Druck über Buttons erzwingen
11.12.2009 09:20:24
{Boris}
Hi Thor,
das kannst Du über eine Boolsche Public-Variable lösen, die Du zu Beginn des Print-Ereignisses abfragst.
Grüße Boris
AW: Druck über Buttons erzwingen
11.12.2009 09:26:06
Thor
Hallo Boris,
erstmal danke für die schnelle Antwort.
Aber könntest Du mir das bitte etwas genauer erklären, evtl mit einem Beispiel? Ich bin wie gesagt mehr oder weniger kompletter Laie was vba angeht. Ich war schon glücklich, meine CommandButtons passend "programmiert" zu haben :)
Anzeige
AW: Druck über Buttons erzwingen
11.12.2009 09:30:58
{Boris}
Hi Thor,
in ein allgemeins Modul:

Option Explicit
Public bolPrint As Boolean
Sub Drucken_Makro()
bolPrint = True
End Sub
Das Makro "Drucken_Makro" ist Deinem Button zugewiesen.
Und in das Klassenmodul "DieseArbeitsmappe":

Option Explicit
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If Not bolPrint Then Cancel = True
'Hier kannst Du jetzt drucken, was Du willst
bolPrint = False
End Sub

Cancel = Not bolPrint reicht! Gruß owT
11.12.2009 09:34:30
Luc:-?
:-?
Klar, allerdings...
11.12.2009 09:36:22
{Boris}
Hi Luc,
für "Kaum VBA-Kenntnisse" noch schwerer nachzuvollziehen ;-)
Grüße Boris
Anzeige
Danke @ Boris
11.12.2009 09:48:01
Thor
Danke Boris für die schnelle und kompetente Hilfe.
Hab den Code mal gleich getestet. Funktioniert hervorragend :)
Alle Menüpunkte aus
11.12.2009 09:43:46
Rudi
Hallo,
oder etwas aufwändiger so:
In DieseArbeitsmappe
Option Explicit
Private Sub Workbook_Activate()
Drucken_EinAus False
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Drucken_EinAus True
End Sub
Private Sub Workbook_Open()
Drucken_EinAus False
End Sub
Private Sub Workbook_Deactivate()
Drucken_EinAus True
End Sub
Private Sub Drucken_EinAus(blnEnabled As Boolean)
Dim c As CommandBar
On Error Resume Next
For Each c In Application.CommandBars
c.FindControl(ID:=4, recursive:=True).Enabled = blnEnabled
c.FindControl(ID:=2521, recursive:=True).Enabled = blnEnabled
Next
On Error GoTo 0
If blnEnabled Then
Application.OnKey "^p"
Else
Application.OnKey "^p"
End If
End Sub

Gruß
Rudi
Anzeige
Danke auch an Dich
11.12.2009 09:51:36
Thor
Hallo Rudi,
auch an Dich ein dickes Danke schön für die rasche Hilfe.
Ich werde morgen im Büro mal Deine und Boris`Lösung auf den Büro-Rechnern durchspielen. Je nachdem, wie "beschnitten" unsere Systeme sind, sollte es so funktionieren.
Zumindest läuft es bei mir zuhause hervorragend :)
Korrektur
11.12.2009 09:57:38
Rudi

Private Sub Drucken_EinAus(blnEnabled As Boolean)
Dim c As CommandBar
On Error Resume Next
For Each c In Application.CommandBars
c.FindControl(ID:=4, recursive:=True).Enabled = blnEnabled
c.FindControl(ID:=2521, recursive:=True).Enabled = blnEnabled
Next
On Error GoTo 0
If blnEnabled Then
Application.OnKey "^p"
Else
Application.OnKey "^p", ""
End If
End Sub

Anzeige
AW: Korrektur
11.12.2009 10:21:29
Thor
Hallo Rudi,
Mit Deinem Code ist es aber immer noch möglich per Strg+P auf das Druckmenü zuzugreifen.
Kann man das auch noch unterbinden?
Das Problem ist einfach, dass die lieben Kollegen sonst unter Garantie das Ganze NICHT über die selbstdeffinierten Buttons ausdrucken und mich dann von der Seite anmachen, es würde nicht funktionieren wie geplant. Und ehrlich gesagt, habe ich keine Lust, die Kollegen jedesmal auf Ihre eigene Unfähigkeit hinzuweisen, den richtigen Button zu nutzen *g
AW: Korrektur
11.12.2009 10:30:54
Rudi
Hallo,
Mit Deinem Code ist es aber immer noch möglich per Strg+P auf das Druckmenü zuzugreifen.

Deshalb die Korrektur.
Gruß
Rudi
Anzeige
AW: Korrektur
11.12.2009 10:39:33
Thor
Ah, ich seh schon
Danke nochmal :)

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige