Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
504to508
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
504to508
504to508
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Bildschirm speichern

Bildschirm speichern
25.10.2004 22:57:23
Stefan
Guten Abend miteinander
Ich habe nachfolgenden Code entdeckt. Könnte man den auch im Excel umsetzen?
Leider meldet VBA immer ein Fehler bei Clipboard.GetData beim Kompilieren.
Hat jemand eine Idee?
Vielen Dank
Schönen Abend
Stefan
Option Explicit
' zunächst die benötigten API-Deklarationen
Private Declare Sub keybd_event Lib "user32" ( _
ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Long, _
ByVal dwExtraInfo As Long)
' Screenshot erstellen und ggf. als Bitmap speichern

Private Sub DoSnapshot(Optional ByVal bActiveWindow As Boolean = False, _
Optional ByVal sFile As String = "")
' Der Parameter bActiveWindow legt fest, ob ein Screenshot
' für das aktuelle Fenster (True) oder für gesamten
' Windows-Desktop (False)erstellt werden soll
' Wird für "sFile" ein Dateiname angegeben wird der
' Screenshot sofort als Bitmap gespeichert
Const KEYEVENTF_KEYUP = &H2
Const VK_MENU = &H12
Const VK_SNAPSHOT = &H2C
' Screenshot erstellen ...
If bActiveWindow Then keybd_event VK_MENU, 0, 0, 0  ' ALT-Taste
keybd_event VK_SNAPSHOT, 0, 0, 0                    ' Druck-Taste
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0
If bActiveWindow Then keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0
DoEvents
' ... und als Bild speichern
If sFile <> "" Then
SavePicture Clipboard.GetData, sFile
End If
End Sub

'Beispiel für den Aufruf:
' Destkop als Bild speichern
DoSnapshot , "d:\desktop,bmp"
' Aktives Fenster als Bild speichern
DoSnapshot True, "d:\window,bmp"

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bildschirm speichern
Ulf
Der Code ist nicht vollständig, es fehlen auch API-Deklarationen.
Ulf
Oder so?
Stefan
Ich suche noch nach einer Möglichkeit mein WebBrowser1 auszurichten. Wie könnte ich es hinbringen, dass der WebBrowser1 aus der UserForm für die Zeit des knipsens den ganzen Bildschirm ausfüllt?
Besten Dank für Eure HIlfe
Stefan
Das funktioniert unter Excel. danach einfügen CTRL + V, geht das auch eleganter per Code?
Option Explicit
'Hier alle benötigten API-Funktionen
Public Declare

Sub keybd_event Lib "user32" _
(ByVal bVk As Byte, ByVal bScan As Byte, _
ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
'Die nachfolgende Prozedur erstellt das Screenshot
Public 

Sub MakeScreenshot(ByVal ActiveWindow As Boolean)
'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 keybd_event VK_MENU, 0, 0, 0 ''ALT-Taste
keybd_event VK_SNAPSHOT, 0, 0, 0 ''Druck-Taste
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0
If ActiveWindow Then keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0
DoEvents
End Sub


Sub test()
Call MakeScreenshot(True)
End Sub

Anzeige
AW: Oder so?
Ulf
Vergrössere das userform z.B. auf Application.Width und Application.Height. Das macht
aber nur richtig Sinn, wenn die Application auch maximiert angezeigt wird und hängt
zudem noch von der Auflösung ab.
Ulf
Ist noch nicht ganz das Gelbe vom Ei
Stefan
Vielen Dank Ulf
Irgendwie hast Du recht wegen der Auflösung. Das geht so nicht. Wie könnte ich die UserForm sicher in die linke obere Ecke schmeissen und nach dem PrintScreen wieder zurück an ihren alten Sandort. Ginge das? Ich könnte sie dann mit der Breiten und Höheneinstellung so einrichten, dass ein PrintScrren vom Fenster ein ansehliches Resultat bringt!
Grüsse
Stefan
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige