Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1712to1716
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
Screenshot speichern
23.09.2019 18:04:41
Niko
Hallo zusammen,
mit nachfolgenden Codezeilen erzeuge ich einen Screenshot von einer Userform.
Private Declare Sub keybd_event Lib "User32" _
(ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Sub cmdButton1()
keybd_event &H2C, 1, 0, 0
Gibt es eine Möglichkeit diesen Screenshot gleichzeitig z.B. im Ordner 'Eigene Dateien' zu speichern.
Danke für eure Mühe und schönen Abend.
Niko

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Screenshot speichern
23.09.2019 19:24:43
Nepumuk
Hallo Nico,
in welchen Format?
Gruß
Nepumuk
AW: Screenshot speichern
23.09.2019 22:45:56
Niko
Hallo Nepumuk,
danke für deine Rückmeldung.
Die UserForm füllt den ganzen Bildschirm aus und ich wollte den Screenshot als jpg oder png speichern.
Gruß
Niko
AW: Screenshot speichern
24.09.2019 10:53:25
Nepumuk
Hallo Nico,
teste mal:
Option Explicit

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

Private Const SM_CXSCREEN As Long = 0&
Private Const SM_CYSCREEN As Long = 1&
Private Const PIXEL_TO_POINT As Double = 0.75

Public Sub Screenshot()
    Dim dblWidth As Double, dblHeight As Double
    Dim objChartObject As ChartObject
    dblWidth = GetSystemMetrics(SM_CXSCREEN) * PIXEL_TO_POINT
    dblHeight = GetSystemMetrics(SM_CYSCREEN) * PIXEL_TO_POINT
    Call keybd_event(vbKeySnapshot, 0, 0&, 0)
    DoEvents
    Set objChartObject = ActiveSheet.ChartObjects.Add( _
        Left:=0, Top:=0, Width:=dblWidth, Height:=dblHeight)
    With objChartObject
        Call .Activate
        Call .Chart.Paste
        Call .Chart.Export(Filename:="H:\Test.jpg", FilterName:="JPG", Interactive:=False) 'Pfad anpassen !!!
        
        Call .Delete
    End With
    Set objChartObject = Nothing
End Sub

Gruß
Nepumuk
Anzeige
AW: Screenshot speichern
24.09.2019 11:28:29
Niko
Hallo Nepumuk,
vielen Dank für den Code.
Der Screenshot ist perfekt. Allerdings wird nur ein leerer weißer Rahmen gespeichert.
Gruß
Niko
AW: Screenshot speichern
24.09.2019 11:54:54
Nepumuk
Hallo Nico,
kann ich nicht nachvollziehen, bei mir wird der Screenshot gespeichert. Das habe ich natürlich getestet. Welche Excelversion benutzt du?
Gruß
Nepumuk
AW: Screenshot speichern
24.09.2019 12:14:01
Niko
Hallo Nepumuk,
ich benutze aktuell 'Home365', hab es gerade unter Excel 2010 getestet - auch da wird nur ein leerer Rahmen gespeichert.
Ich habe deinen Code einer Schaltfläche zugewiesen, kann es damit zusammenhängen?
Gruß
Niko
AW: Screenshot speichern
24.09.2019 12:26:13
Nepumuk
Hallo Nico,
daran kann es nicht liegen, ich habe es soeben mit Button getestet, funktioniert einwandfrei. Ich habe Excel 2013. Step das Programm mal mit F8 durch, da sollte ein Screenshot vom VBA-Editor entstehen.
Gruß
Nepumuk
Anzeige
AW: Screenshot speichern
24.09.2019 12:35:26
Niko
Hallo Nepumuk,
wenn ich in der Prozedur F8 drücke, wird Private Sub UserForm_Initialize() - ohne weitere Meldung -gelb markiert!?
Gruß
Niko
AW: Screenshot speichern
24.09.2019 12:52:10
Nepumuk
Hallo Nico,
wird das Userform in meiner Prozedur geladen? Du solltest diese Prozedur ohne Userform mal mit F8 durchsteppen.
Gruß
Nepumuk
AW: Screenshot speichern
24.09.2019 13:21:48
Niko
Hallo Nepumuk,
es ist wie eben beschrieben: sobald ich in deiner Prozedur F8 drücke markiert das Programm sofort UserForm_initialize. Kann also deine Prozedur nicht durchsteppen.
Gruß
Niko
AW: Screenshot speichern
24.09.2019 14:23:32
Nepumuk
Hallo Nico,
kopiere die Prozedur inklusive der API-Deklarationen in ein Standardmodul und teste da.
Gruß
Nepumuk
Anzeige
AW: Screenshot speichern
24.09.2019 15:09:19
Niko
Hallo Nepumuk,
zwischenzeitlich habe ich folgendes herausgefunden:
Meine Arbeitsmappe enthält mehrere Userforms. Die Userform, die ich mit Hilfe deiner Prozedur speichern will, heißt 'frmAusgaben', die dazugehörende Tabelle ebenfalls 'Ausgaben'.
Mit Hilfe deiner Prozedur speichert er jetzt allerdings nicht den Screenshot der aktiven Userform (frmAusgaben), sondern eine andere Userform (frmInfo) aus der Arbeitsmappe.
Kann es sein, dass das im Code entsprechend spezifiziert werden muss?
Gruß
Niko
AW: Screenshot speichern
24.09.2019 15:38:07
Niko
Hallo Nepumuk,
mit Hilfe deiner Prozedur wird ein Screenshot der Tabelle hinter der Userform erstellt und dann als leerer weißer Rahmen in die Tabelle eingefügt! Der gleiche weiße Rahmen wird dann im Verzeichnis gespeichert das in der Prozedur angelegt ist.
Bei doevent wird der Screenshot erstellt und bei Paste in die Tabelle(!) eingefügt.
Den Test konnte ich nur ausgelagert in einem Modul machen.
Dein Code ist auf einem Button hinterlegt und wenn ich ihn da mache geht er wie schon beschrieben zu Userform_initialize.
Gruß
Niko
Anzeige
AW: Screenshot speichern
24.09.2019 17:16:38
Nepumuk
Hallo Nico,
eventuell ist etwas an deinen Grafikfiltern nicht in Ordnung. Ändere mal die Export-Methode so:
Call .Chart.Export(Filename:="H:\Test.bmp", FilterName:="BMP", Interactive:=False) 'Pfad anpassen !!!

Gruß
Nepumuk
AW: Screenshot speichern
24.09.2019 17:33:46
Niko
Hallo Nepumuk,
funktioniert leider auch nicht - leerer weißer Rahmen - allerdings mit 5.851 KB (!?).
Irgendwie scheint das Programm das Bild nicht zu exportieren sondern nur dessen Größe.
Vielleicht braucht's ein paar Tage Abstand :-)
Danke vielmals für deine Mühe.
Gruß
Niko
Anzeige
AW: Screenshot speichern
24.09.2019 20:06:30
Nepumuk
Hallo Nico,
wenn es so nicht funktioniert, dann hätte ich noch ein Ass im Ärmel, das ist allerdings etwas aufwendiger und ich muss zweimal speichern. einmal als bmp und dann z.B. als png, das bmp wird anschließend gelöscht. Soll ich?
Gruß
Nepumuk

19 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige