VBA ausführen nach Befehl drucken

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: VBA ausführen nach Befehl drucken von: Jochen
Geschrieben am: 14.03.2005 18:52:19

Hallo zusammen,

beim drücken des Buttons "Drucken" oder nach Auswahl von Datei - Drucken möchte ich, daß ein Skript startet.

Wie mache ich daß ????

Danke und Gruß

Jochen

Bild


Betrifft: AW: VBA ausführen nach Befehl drucken von: Herbert H.
Geschrieben am: 14.03.2005 19:01:26

Hallo Jochen
dafür gibt es das Arbeitsmappen-Ereignis "Before_Print"

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Mein Makro
End Sub


Gruß Herbert


Bild


Betrifft: AW: VBA ausführen nach Befehl drucken von: Jochen
Geschrieben am: 14.03.2005 21:51:16

Hallo Herbert,

Danke für Deine Antwort, aber wenn ich das Makro (s.u.) in ein Modul kopiere, dann führt er die gewünschten Aktionen leider nicht aus.

Weiß hier evtl jemand Rat ?!?!?!


Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim strUnlocked As String
strUnlocked = "H22,C3:I3,D5:H5,D7:I54,B19:B21,B28:B30,B35:B37,B44:B46,B52:B54"
With ActiveSheet
    .Unprotect
    .Range(strUnlocked).Interior.ColorIndex = xlNone
    .PrintOut
    .Range(strUnlocked).Interior.ColorIndex = 19
    .Protect
End With
End Sub



Danke und Gruß

Jochen


Bild


Betrifft: AW: VBA ausführen nach Befehl drucken von: Herbert H.
Geschrieben am: 14.03.2005 21:58:36

du mußt es in das Arbeitsmappenmodul "Diese Arbeitsmappe" kopieren !
Gruß Herbert


Bild


Betrifft: AW: VBA ausführen nach Befehl drucken von: Jochen
Geschrieben am: 15.03.2005 07:10:36

Hallo Herbert,

wenn ich nun auf "drucken" gehe, dann druckt er mir alles gleich zwei mal. Einmal an der stelle, an der im Skript ".PrintOut" steht und einmal nach beendigung des Makros. Also nciht wirklihc daß, was ich haben will.

Weißt Du hier eine Lösung?

Danke und Gruß

Jochen


Bild


Betrifft: AW: VBA ausführen nach Befehl drucken von: WernerB.
Geschrieben am: 15.03.2005 07:22:47

Hallo Jochen,

wie gefällt Dir das (ungetestet)?
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim strUnlocked As String
    Application.EnableEvents = False       'Ereignis AUS
    strUnlocked = "H22,C3:I3,D5:H5,D7:I54,B19:B21,B28:B30,B35:B37,B44:B46,B52:B54"
    With ActiveSheet
      .Unprotect
      .Range(strUnlocked).Interior.ColorIndex = xlNone
      .PrintOut
      .Range(strUnlocked).Interior.ColorIndex = 19
      .Protect
    End With
    Application.EnableEvents = True        'Ereignis EIN
    Cancel = True
End Sub

Viel Erfolg wünscht
WernerB.

P.S.: Dieses Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter !


Bild


Betrifft: AW: VBA ausführen nach Befehl drucken von: Jochen
Geschrieben am: 15.03.2005 08:51:11

Hallo Werner,

so ganz ist es daß auch nciht. Nun druckt er zwar nur noch einmal, aber wenn ich über Datei - Drucken gehe, dann kann ich gar keinen Drucker auswählen.

Da ich öfter zwischen PDF uns Papier wechsel sollte daß auch möglich sein ....

naja, evtl ist es ja auhc nur etwas viel verlangt!

Danke und Gruß

Jochen


Bild


Betrifft: AW: VBA ausführen nach Befehl drucken von: Herbert H.
Geschrieben am: 15.03.2005 10:33:26

Hallo Jochen,
Ich habe mir dein Makro nicht angeschaut,habe darum auch nicht gesehen,
daß du im Makro druckst...
die einfachste Lösung, oder vielleicht überhaupt die einzig mögliche Lösung
ist, mit einem ganz normalen Makro,ausgeführt mit einer Schaltfläche
zu Drucken.

Sub Drucken()
Dim strUnlocked As String
strUnlocked = "H22,C3:I3,D5:H5,D7:I54,B19:B21,B28:B30,B35:B37,B44:B46,B52:B54"
    
    With ActiveSheet
      .Unprotect
      .Range(strUnlocked).Interior.ColorIndex = xlNone
      .PrintOut
      .Range(strUnlocked).Interior.ColorIndex = 3
      .Protect
    End With
    
End Sub



Gruß Herbert


Bild


Betrifft: AW: VBA ausführen nach Befehl drucken von: Jochen
Geschrieben am: 15.03.2005 10:43:20

Hallo Herbert,

daran habe ich auch schon gedacht und es auch schon mal eingebaut. Nun muß ich mir halt noch mit einbauen, daß er den Button ausblendet vor dem drucken. (sieht halt schöner aus ....)

Kann ich denn dann erzwingen, daß er mich automatisch in das Drucker-Auswahlmenü schickt und nicht direkt druckt?

Danke und Gruß

Jochen


Bild


Betrifft: AW: VBA ausführen nach Befehl drucken von: Herbert H.
Geschrieben am: 15.03.2005 12:06:21

wenn du den "CommandButton" der Steuerelement-Toolbox nimmst,
brauchst du ihn nicht ausblenden,sondern die Buttoneigenschaft "Printobject" auf
false setzen...

den Drucker kannst du eventuell auch per Makro auswählen...

etwa so:

Sub Drucker_einstellen()
SendKeys "%"
SendKeys "{down 13}" & "{enter}" & "{tab 5}" & "{down 1}"
End Sub


da mußt du halt die restlichen Tastenanschläge bis zum Schließen
des Druckdialogs noch hinzufügen...

Gruß Herbert


Bild


Betrifft: AW: VBA ausführen nach Befehl drucken von: Jochen
Geschrieben am: 15.03.2005 13:07:33

Hallo Herbert,

auf den ersten Blick scheint das Makro nun daß zu machen, was soll, auch wenn ich die Tastenfolge da oben nicht ganz verstehe .....

Trotzdem einen recht herzlichen Dank !!!!

Gruß

Jochen


Bild


Betrifft: AW: VBA ausführen nach Befehl drucken von: Jochen
Geschrieben am: 15.03.2005 13:16:13

Hallo zusammen,

da habe ich mich wohl zu früh gefreut. Mein Makro sieht jetzt so aus:

Sub drucken()
Dim strUnlocked As String
strUnlocked = "H22,C3:I3,D5:H5,D7:I54,B19:B21,B28:B30,B35:B37,B44:B46,B52:B54"
With ActiveSheet.Unprotect
    ActiveSheet.Range(strUnlocked).Interior.ColorIndex = xlNone
    SendKeys "%"
    SendKeys "{down 13}" & "{enter}" & "{tab 5}" & "{down 1}"
    ActiveSheet.Range(strUnlocked).Interior.ColorIndex = 19
    ActiveSheet.Protect
End With
End Sub


Nun kann ich zwar den Drucker auswählen, aber bevor der Drucker druckt, sind die anderen Aktionen auch schon wieder vorbei .... Also doch nicht daß wahre. Eigentlich müßte er warten, bis er eine Rückmeldung bekommt, daß der Druck abgeschlossen ist ....

Naja, ich schau mal, wie ich daß nun hinbekomme, aber trotzdem Danke.

Gruß

Jochen


Bild


Betrifft: AW: VBA ausführen nach Befehl drucken von: Herbert H.
Geschrieben am: 15.03.2005 13:34:52

ich habe nicht geschrieben, daß du das wie von dir ausgeführt
machen sollst...

probier einmal das Makro "Druckereinstellung" als einzelnes Makro...
damit du überhaupt einmal siehst was da läuft..
ich habe ja geschrieben, daß du es noch ergänzen mußt...
ich würde es als einzelnes Makro aufrufen,
und nicht einbauen...
Gruß Herbert


Bild


Betrifft: AW: VBA ausführen nach Befehl drucken von: Jochen
Geschrieben am: 15.03.2005 13:39:01

Hallo Herbert,

auch als extra Makro habe ich es schon versucht (s.u.). Das Ergebniss ist leider das gleiche :-(



Sub drucken()
Dim strUnlocked As String
strUnlocked = "H22,C3:I3,D5:H5,D7:I54,B19:B21,B28:B30,B35:B37,B44:B46,B52:B54"
With ActiveSheet.Unprotect
    ActiveSheet.Range(strUnlocked).Interior.ColorIndex = xlNone
    drucker_einstellen
    ActiveSheet.Range(strUnlocked).Interior.ColorIndex = 19
    ActiveSheet.Protect
End With
End Sub


Sub drucker_einstellen()
SendKeys "^p" & "{tab 5}" & "{down 1}"
End Sub



Trotzdem Danke für Deine Tips

Jochen


Bild


Betrifft: AW: VBA ausführen nach Befehl drucken von: Herbert H.
Geschrieben am: 15.03.2005 13:57:04

ich meinte, das Makro extra mit eigener Schaltfläche aufrufen...

Sub drucken()
Dim strUnlocked As String
strUnlocked = "H22,C3:I3,D5:H5,D7:I54,B19:B21,B28:B30,B35:B37,B44:B46,B52:B54"
With ActiveSheet.Unprotect
    ActiveSheet.Range(strUnlocked).Interior.ColorIndex = xlNone
 
    ActiveSheet.Range(strUnlocked).Interior.ColorIndex = 19
    ActiveSheet.Protect
End With
End Sub




Sub drucker_einstellen()
SendKeys "^p" & "{tab 5}" & "{down 1}"
End Sub


mit einer Schaltfläche den Drucker x einstellen,
mit einer anderen Schaltfläche Drucker y einstellen,
mit einer anderen Schaltfläche drucken..


Gruß Herbert


Bild


Betrifft: AW: VBA ausführen nach Befehl drucken von: Jochen
Geschrieben am: 15.03.2005 14:19:04

OK, zwar nciht ganz daß was ich wollte, aber es lößt mein Problem natürlich auch ....

Danke für die vielen Hilfestellungen !!!

Gruß

Jochen


 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA ausführen nach Befehl drucken"