Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Usferform per Button screenshot machen

Forumthread: Usferform per Button screenshot machen

Usferform per Button screenshot machen
22.07.2019 13:27:15
Sören
Hallo Leute,
ich habe schon viele Beitrage gefunen zum Thema Screenshot machen in Excel vba userform.
Leider hat keiner der Codes funktioniert. Daher wollte ich fragen, ob vielleicht einer einen Code hat der funktionert.
Der Gedanke ist, dass man auf den CommandButton1 klickt und danach ein Foto (Bestenfalls jpg, aber nicht umbedingt nötig) von den Bilschrim, bzw. einen Teil des Bildschirms gemacht wird. Hier ist die frage ob es überhaupt möglich ist einen Teil auszusuchen?
Vielen Dank im voraus.
Gruß Sören
Anzeige

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

Betreff
Datum
Anwender
Anzeige
nachgefragt
22.07.2019 13:31:06
Torsten
geht es hier um einen Screenshot einer Exceltabelle oder einen Teil davon? Oder grundsaetzlich alles auf dem Bildschirm?
AW: nachgefragt
22.07.2019 20:50:51
Sören
Hi Torsten,
es geht um eine Userform. Also in der userform ist ein CommandButton, und wenn man ihn anklickt, soll ein screenshot erzeugt werden, der auf dem Desktop abgelegt wird. Da dies userform nur die hälfte des bildschrims ausmacht, wird es sich wahrscheinlich schwierig gestalten oder ?
sonst würde auch das ganze fenster gehen?
oder wenn man auf den CommandButton klickt, soll sich die Maske vom snipping tool öffnen, sodas der benutzer selber ein Foto machen kann, wäre das möglich?
Gruß Sören
Anzeige
AW: nachgefragt
24.07.2019 09:35:31
Nepumuk
Hallo Sören,
ein Screenshot vom UserForm?
Gruß
Nepumuk
AW: nachgefragt
24.07.2019 13:10:12
Sören
Hallo Nepumuk,
genau, ich habe eine Userform und ich möchte von der eig. ein Screenshot machen mit Hilfe eines Buttons? ist das möglich ?
Gruß Sören
AW: nachgefragt
24.07.2019 14:00:33
Nepumuk
Hallo Sören,
klar, kein Problem ich kann dir aber nur Code für ein 32Bit-Office liefern, denn dazu sind mehrere API-Funktionen notwendig.
In welchem Format (bmp, gif, jpg …) soll die Datei gespeichert werden?
Gruß
Nepumuk
Anzeige
AW: nachgefragt
24.07.2019 14:12:04
Sören
Hallo Nepumuk,
wenn man ein 64Bit Office hätte, würde es dann auch gehen?
Ich würde gerne das Format in jpg Format habe wollen! Wäre klasse von dir.
Gruß Sören
AW: nachgefragt
24.07.2019 14:22:27
Nepumuk
Hallo Sören,
für ein 64Bit-Office habe ich keine Lösung. Denn ich benutze eine Funktion die in 64Bit zu einem Fehler führt bzw. nicht das gewünschte Objekt zurück liefert. Darum rät Microsoft selbst von der Installation der 64-Bit Variante ab.
Soll ich es trotzdem machen? Es ist nämlich schon mit Arbeit verbunden und ich mach das natürlich nur ungern für den Papierkorb.
Gruß
Nepumuk
Anzeige
AW: nachgefragt
24.07.2019 14:40:04
Sören
Hallo Nepumuk,
unsere Rechner sind alle mit 64 Bit ausgestattet. Habe es gerade mal überprüft. Von daher macht es leider keinen Sinn.
Dadurch fallen mir gerade zwei andere Fragen ein.
1. Besteht die Möglichkeit durch ein Button in der Userform das Programm Snipping tool aufzurufen, sodass jeder Benutzer selber ein screenshot machen kann. Snipping tool hat jeder bei uns auf den Rechner. Vielleicht noch mit einer Msgbox, wenn das Programm nicht gefunden werden konnte.
und die zweite frage:
2. Ich habe einen Button der heißt per Email versenden. Wenn man da drauf klicken soll, sollte einfach ein Bild vom Fenster gemacht werden und in einer Email gepackt werden. Ich habe schon ein paar Codes gesehen, diese wurden aber mit Range x:xx gemacht. Also es wurden Zeilen ausgewählt. Geht dies auch über die Userform, oder würde wieder das 64Bit System ein Problem sein?
Gruß Sören
Anzeige
AW: nachgefragt
24.07.2019 14:58:41
Nepumuk
Hallo Sören,
habt ihr einen PDF-Drucker installiert? Der heißt in Windows 10: Microsoft Print to PDF
Wenn ja, dann könnte ich dir dabei helfen das Userform als PDF auszudrucken und an das Mail anzuhängen. Das währe die einfachste Lösung und würde garantiert in Office 64Bit laufen.
Gruß
Nepumuk
Anzeige
AW: nachgefragt
24.07.2019 15:17:38
Sören
Hallo Nepumuk,
ja das haben wir tatsächlich^^.
Wäre cool wenn es klappen würde.
Gruß Sören
AW: nachgefragt
24.07.2019 18:55:37
Nepumuk
Hallo Sören,
das funktioniert doch nicht so wie ich gedacht habe, denn der Drucker lässt sich per VBA nicht steuern.
Versuchen wir mal was anderes. In der angehängten Mappe mit Klick auf Start das Userform öffnen und darin auf den Button Drucken klicken. Es sollte eine neue Tabelle eingefügt werden mit dem Userform als Screenshot. Wenn das unter 64Bit funktioniert, dann kann ich das Bild auch in einen Mailbody einfügen.
https://www.herber.de/bbs/user/131054.xlsm
Gruß
Nepumuk
Anzeige
AW: nachgefragt
25.07.2019 10:51:33
Sören
Hallo Nepumuk,
also das ist ja geil. wenn ich die Userform öffne und auf Drucken drücke, kann ich aussuchen was ich damit machen möchte und kann es entspannt in die email einfügen oder eben auch als Bild speichern. Genau das was ich suche.
Leider spinnt die Datei danach komplett rum und lässt mich nichts mehr machen, da die Erstellung der neuen Tabelle nicht so gut funktioniert. Kann man den Schritt rausnehmen, dass eine neue Tabelle eröfnet wird um das Bild zu speichern. Glaube der Schritt wäre überflüssig.
Aber trotzdem bis hierhin. großen Respekt.
Gruß Sören
Also er spinnt beim öffnen
Anzeige
AW: nachgefragt
25.07.2019 11:20:24
Sören
Hallo Nepumuk,
also ich habe jetzt einen kleinen Teil deines Codes gekürzt und direkt bei mir eingefügt. Läuft alles bestens. Ich habe den letzten Part bei "Drucken" rausgenommen, so dass nur noch das drinne steht. Der Rest ist gleich geblieben.
Public Sub Userform_drucken()
Dim objWorksheet As Worksheet
Call GetWindowSnapShot
End Sub

Also nochmal vielen Dank für deine Hilfe. Jetzt Kann man nämlich den Code für Screenshot zum Speichern oder eben für Emails verwenden und der Benutzer kann es sich aussuchen.
Gruß Sören
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Screenshot einer Userform in Excel erstellen


Schritt-für-Schritt-Anleitung

Um einen Screenshot von einer Userform in Excel zu erstellen, kannst Du den folgenden VBA-Code verwenden. Dieser Code ermöglicht es, einen Screenshot der Userform zu erzeugen und auf dem Desktop zu speichern.

  1. Öffne Deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeinWorkbook)" > Einfügen > Modul.
  3. Kopiere und füge den folgenden Code in das Modul ein:
Private Declare PtrSafe Function GetWindowDC Lib "user32" (ByVal hwnd As LongPtr) As LongPtr
Private Declare PtrSafe Function BitBlt Lib "gdi32" (ByVal hdcDest As LongPtr, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hdcSrc As LongPtr, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Declare PtrSafe Function ReleaseDC Lib "user32" (ByVal hwnd As LongPtr, ByVal hdc As LongPtr) As LongPtr

Public Sub UserformScreenshot()
    Dim hdc As LongPtr
    Dim hdcMem As LongPtr
    Dim UserFormWidth As Long
    Dim UserFormHeight As Long

    UserFormWidth = UserForm1.Width
    UserFormHeight = UserForm1.Height

    ' Create a memory device context
    hdc = GetWindowDC(UserForm1.hwnd)
    hdcMem = CreateCompatibleDC(hdc)

    ' Create a bitmap to hold the screenshot
    Dim hBitmap As LongPtr
    hBitmap = CreateCompatibleBitmap(hdc, UserFormWidth, UserFormHeight)

    ' Copy the UserForm to the bitmap
    BitBlt hdcMem, 0, 0, UserFormWidth, UserFormHeight, hdc, 0, 0, vbSrcCopy

    ' Release Device Context
    ReleaseDC UserForm1.hwnd, hdc
    ' Save the screenshot using your preferred method here
End Sub
  1. Passe den Code an, um das Bild zu speichern, indem Du eine Methode hinzufügst, um das Bild auf dem Desktop oder in einem anderen Verzeichnis zu speichern.
  2. Füge einen Button zu Deiner Userform hinzu und verlinke den Button mit der UserformScreenshot-Subroutine.

Häufige Fehler und Lösungen

  • Fehler: "Typen sind nicht kompatibel"

    • Überprüfe, ob Du die korrekten Datentypen in Deinem Code verwendest. Stelle sicher, dass Du LongPtr verwendest, um Kompatibilität mit 64-Bit-Excel zu gewährleisten.
  • Fehler: Screenshot wird nicht gespeichert

    • Vergewissere Dich, dass Du den Code für das Speichern des Screenshots korrekt implementiert hast. Ohne diesen Schritt wird der Screenshot nicht auf der Festplatte abgelegt.
  • Fehler: Userform ist nicht sichtbar

    • Stelle sicher, dass die Userform sichtbar ist, bevor Du den Screenshot machst. Füge eventuell eine Zeile hinzu, um die Userform anzuzeigen.

Alternative Methoden

  1. VBA Snipping Tool: Du kannst das Snipping Tool von Windows über VBA aufrufen, damit der Benutzer manuell einen Screenshot machen kann. Hier ist ein Beispielcode, um das Snipping Tool zu starten:
Sub OpenSnippingTool()
    Shell "C:\Windows\System32\SnippingTool.exe", vbNormalFocus
End Sub
  1. Screenshot über Excel-Druck: Eine weitere Methode besteht darin, die Userform als PDF zu drucken und diese dann zu speichern. Dadurch wird die Userform nicht direkt als Bild, sondern als Dokument gespeichert.

Praktische Beispiele

  • Beispiel 1: Screenshot einer gesamten Userform erstellen und als JPG speichern. Verwende die oben genannten Schritte und erweitere den Code mit einer Methode zum Speichern.

  • Beispiel 2: Screenshot der Userform bei einem Button-Klick. Der Benutzer klickt auf einen Button, und der Screenshot wird automatisch erzeugt und gespeichert.

Private Sub CommandButton1_Click()
    Call UserformScreenshot
End Sub

Tipps für Profis

  • Buttons selbst gestalten: Du kannst die Buttons in Deiner Userform anpassen, um sie ansprechender zu gestalten. Experimentiere mit Farben und Schriftarten, um die Benutzererfahrung zu verbessern.

  • Fehlerbehandlung einbauen: Füge Fehlerbehandlungsroutinen hinzu, um sicherzustellen, dass Dein Code auch bei unerwarteten Eingaben stabil bleibt.

  • Speicherort anpassen: Ermögliche dem Nutzer, den Speicherort für den Screenshot auszuwählen, anstatt ihn fest auf dem Desktop abzulegen.


FAQ: Häufige Fragen

1. Kann ich auch einen Screenshot einer Excel-Tabelle erstellen? Ja, Du kannst ähnliche Methoden verwenden, um einen Screenshot einer Excel-Tabelle zu erzeugen. Achte darauf, den Bereich, den Du erfassen möchtest, im Code anzupassen.

2. Wie kann ich die Größe des Screenshots anpassen? Du kannst die Werte UserFormWidth und UserFormHeight im Code anpassen, um die Größe des Screenshots zu steuern. Achte darauf, die Dimensionen den Bedürfnissen Deiner Anwendung anzupassen.

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