Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1048to1052
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
Inhaltsverzeichnis

Hardcopy mit ALT + Druck (Userform)

Hardcopy mit ALT + Druck (Userform)
10.02.2009 12:31:00
chris
Hallo VBA Experten, ich muss wieder einmal um Hilfe bitten.
ich habe eine userform von dieser möchte ich der tastenkombi ein Hardcopy machen.
Klappt aber nicht so wie ich es mir vorstelle.
Ich habe auf der Userform 1 Button.Hinter dem steht dieser Code:

Private Sub CommandButton1_Click()
DoEvents
' Button "ALT" wird gedrückt
Call keybd_event(VK_MENU, 0, 0, 0)
' Button "Druck" wird gedrückt
Call keybd_event(VK_SNAPSHOT, 0, 0, 0)
' Button werden wieder losgelassen
Call keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0)
Call keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0)
Me.Hide
Unload Me
End Sub


Ganz am Anfang im Modul habe ich noch das stehen:
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByValdwExtraInfo As Long)
Private Const KEYEVENTF_KEYUP = &H2
'Hier die Taste die geklickt wird !
Const VK_MENU = &H12 ' Alt taste
Private Const VK_SNAPSHOT = &H2C 'Drucken/S-Abf Taste
Wenn ich jetzt den Button klicke erscheint mir in der zwiaschenablage ein hardcopy von Excel und nicht so wie ich es will nur von der userform selbst.
Wenn ich ie Code so umstelle klappt es so wie ich es möchte, nur dann arbeitet mein Makro nicht weiter.
Wo ist mein fehler ?
Hier der code der es richtig macht: (Der Unterschied ist nur der Exit sub)


Private Sub CommandButton1_Click()
DoEvents
' Button "ALT" wird gedrückt
Call keybd_event(VK_MENU, 0, 0, 0)
' Button "Druck" wird gedrückt
Call keybd_event(VK_SNAPSHOT, 0, 0, 0)
' Button werden wieder losgelassen
Call keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0)
Call keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0)
exit sub
Me.Hide
Unload Me
End Sub


3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hardcopy mit ALT + Druck (Userform)
10.02.2009 12:51:11
Bertram
Hallo Chris,
bei mir sieht das Ähnlich aus, allerdings mußt du noch den Parameter 'ActiveWindow' mit einbauen.
Aufruf in deinem Fall: Call MakeScreenshot True

Public Sub MakeScreenshot(ByVal ActiveWindow As Boolean)
'Die nachfolgende Prozedur erstellt das Screenshot
'Der Parameter ActiveWindow legt fest, ob ein Screenshot
'für das aktuelle Fenster (True) oder für gesamten
'Windows-Desktop (False)erstellt werden soll
Const KEYEVENTF_KEYUP = &H2
Const VK_MENU = &H12
Const VK_SNAPSHOT = &H2C
If ActiveWindow Then
' Nur das aktive Fenster abfotografieren
' => Alt-Taste einbeziehen
keybd_event VK_MENU, 0, 0, 0                    ' Alt 'runter
keybd_event VK_SNAPSHOT, 0, 0, 0                ' Druck ' runter
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0  ' Druck hoch
keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0      ' Alt hoch
Else
' Den gesamten Desktop abfotografieren
keybd_event VK_SNAPSHOT, 0, 0, 0                ' Druck ' runter
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0  ' Druck hoch
End If
DoEvents
End Sub


Gruß
Bertram

Anzeige
AW: Hardcopy mit ALT + Druck (Userform)
10.02.2009 12:59:23
chris
Danke für deinen Tipp.
Habe es gerade eben selbst gelöst.:
So

Private Sub CommandButton1_Click()
' Button "ALT" wird gedrückt
Call keybd_event(VK_MENU, 0, 0, 0)
' Button "Druck" wird gedrückt
Call keybd_event(VK_SNAPSHOT, 0, 0, 0)
' Button werden wieder losgelassen
Call keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0)
Call keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0)
DoEvents
Me.Hide
Unload Me
End Sub


nur ein kleines DoEvents
hinzu.Was auch immer der Unterschied ist... :)
Danke gruß Chris

AW: Hardcopy mit ALT + Druck (Userform)
10.02.2009 13:07:00
Bertram
Hi Chris,
du hattest ein DoEvents, nur an der falschen Stelle wie mir scheint.
Gruß
Bertram
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige