Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA: Screenshot von Userform per Button

VBA: Screenshot von Userform per Button
09.03.2023 22:05:41
Userform
Guten Abend zusammen,
ich würde gerne wissen ob es möglich ist vom Userform ein Screenshot per Button zu machen. Also ich bin in Excel öffne ein Userform und in dem Userform ist ein Button mit dem ich dann einen Screenshot vom offenen Userform mache. Geht so was? In google habe ich nichts gefunden.
Gruß
MarC
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA: Screenshot von Userform per Button
09.03.2023 23:21:52
Userform
Hallo Marc,
hier noch eine Version. Vielleicht reicht sie Dir ja.
Code:


Private Declare PtrSafe Sub keybd_event Lib "user32" ( _ ByVal bVk As Byte, ByVal bScan As Byte, _ ByVal dwFlags As Long, ByVal dwExtraInfo As LongPtr) Public Sub UserformInClipbooard1() ' Normalform Const KEYEVENTF_KEYUP = &H2 Const KEYEVENTF_EXTENDEDKEY = &H1 Const VK_SNAPSHOT = &H2C Const VK_LMENU = &HA4 keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY, 0 keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY, 0 keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0 keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0 End Sub ' oder Public Sub UserformInClipbooard2() ' Kurzform keybd_event &HA4, 0, &H1, 0 keybd_event &H2C, 0, &H1, 0 keybd_event &H2C, 0, &H3, 0 keybd_event &HA4, 0, &H3, 0 End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: VBA: Screenshot von Userform per Button
10.03.2023 06:21:24
Userform
Moin!
Bei mir funktioniert ein einfaches Alt+Druck …
Zumindest denkbar, dass es an meinem Greenshot-Editor liegt (den ich aber vorher geschlossen hatte).
Könnte das mal jemand überprüfen?
Siehe auch:
https://www.kreativmedia.ch/de/printscreen-machen
Gruß Ralf
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Screenshot von Userform in Excel VBA erstellen


Schritt-für-Schritt-Anleitung

Um einen Screenshot von einem Userform in Excel VBA zu erstellen, kannst du den folgenden VBA-Code verwenden. Dieser Code nutzt die keybd_event-Funktion, um die Tastenkombination für den Screenshot zu simulieren:

Private Declare PtrSafe Sub keybd_event Lib "user32" ( _
    ByVal bVk As Byte, _
    ByVal bScan As Byte, _
    ByVal dwFlags As Long, _
    ByVal dwExtraInfo As LongPtr)

Public Sub UserformInClipbooard()
    Const KEYEVENTF_KEYUP As Long = &H2
    Const KEYEVENTF_EXTENDEDKEY As Long = &H1
    Const VK_SNAPSHOT As Byte = &H2C
    Const VK_LMENU As Byte = &HA4

    ' Alt-Taste drücken
    keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY, 0
    ' Screenshot erstellen
    keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY, 0
    ' Screenshot-Taste loslassen
    keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0
    ' Alt-Taste loslassen
    keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0
End Sub

Füge diesen Code in das Modul deines Userforms ein. Bei einem Klick auf den Button wird ein Screenshot des Userforms gemacht und in die Zwischenablage kopiert.


Häufige Fehler und Lösungen

Fehler: Screenshot wird nicht erstellt

  • Lösung: Stelle sicher, dass dein Userform aktiv ist, wenn du den Button drückst. Der Screenshot wird nur von dem aktiven Fenster erstellt.

Fehler: Code funktioniert nicht in 64-Bit Excel

  • Lösung: Überprüfe, ob du die PtrSafe-Deklaration korrekt verwendet hast. Der oben gegebene Code ist für 64-Bit Excel geeignet.

Alternative Methoden

Eine alternative Methode zur Erstellung eines Screenshots ist die Verwendung von Drittanbieter-Software wie Greenshot. Diese Software kann Screenshots einfacher und schneller erstellen. Wenn du bereits Greenshot installiert hast, kannst du auch die Alt+Druck-Taste verwenden, um einen Screenshot zu machen, ohne VBA zu verwenden.


Praktische Beispiele

Hier ist ein praktisches Beispiel, wie du den Screenshot von einem Userform machen kannst:

  1. Erstelle ein einfaches Userform mit einem Button.
  2. Füge den oben genannten VBA-Code in das Modul des Userforms ein.
  3. Klicke auf den Button, um den Screenshot zu erstellen.

Die erstellten Screenshots werden in der Zwischenablage gespeichert und können dann in eine Anwendung wie Paint oder Word eingefügt werden.


Tipps für Profis

  • Experimentiere mit weiteren Tastenkombinationen, um Screenshots von bestimmten Bereichen zu erstellen.
  • Nutze die SendKeys-Methode in Kombination mit keybd_event, um benutzerdefinierte Tastenkombinationen zu erstellen.
  • Denke daran, dass die Verwendung von keybd_event möglicherweise nicht in allen Excel-Versionen oder auf allen Windows-Versionen gleich funktioniert.

FAQ: Häufige Fragen

1. Wie kann ich den Screenshot direkt in eine Datei speichern? Um den Screenshot direkt in eine Datei zu speichern, benötigst du eine zusätzliche Bibliothek oder musst den Screenshot manuell in ein Bildbearbeitungsprogramm einfügen und speichern.

2. Funktioniert dieser Code in Excel für Mac? Der obige Code ist für Excel unter Windows gedacht. In Excel für Mac gibt es andere Möglichkeiten, Screenshots zu erstellen, da die keybd_event-Funktion nicht verfügbar ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige