bonjour
j'essaye depuis plusieurs jours de réaliser une capture d'écran d'un userform et de le sauvegarder au format jpg dans mon disque dur, c'est pour pouvoir envoyer la capture écran via outlook
j'ai essayé ce code, mais malheureusement, l'image qu'il me sauvegarde est "vide", elle est toute blanche
par contre si je suis en mode pas à pas, ça fonctionne!!
si je mets des tempos de 5 secondes entre chaque ligne de code, ça ne fonctionne pas (image blanche)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Private Declare Function IsClipboardFormatAvailable Lib "user32" (ByVal wFormat As Integer) As Long Private Declare Function SetWindowLongA Lib "user32" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function fwa Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Const VK_SNAPSHOT = &H2C Private Sub CommandButton1_Click() Dim hPicAvail As Long, T,Handle,chemin Handle = fwa(vbNullString, Me.Caption) chemin = Environ("userprofile") & "\Desktop\" & Me.Name & ".jpg" SetWindowLongA Handle, -16, &H94080080: SetWindowLongA Handle, -20, &H0: DrawMenuBar Handle ' on enleve la caption(l'encadrement)on garde que l'interieur With CreateObject("htmlfile").parentwindow.clipboardData.clearData("Text"): End With 'methode 1 keybd_event VK_SNAPSHOT, 1, 0, 0: keybd_event VK_SNAPSHOT, 1, &H2, 0 'on appuie et on relache la touche snapshot 'on va boucler dans que le contenu du clipboard n'est pas BITMAP soit (2) Do: DoEvents: hPicAvail = IsClipboardFormatAvailable(2): Loop While hPicAvail = 0 'Or (Timer - T) > 1000 'crée un graphique With ActiveSheet.ChartObjects.Add(0, 0, Me.Width, Me.Height) .Chart.Paste: .Chart.Export chemin, "jpg" 'colle l'image dans graphique puis exportation le graphique en image jog .Delete 'supprime le chart End With SetWindowLongA Handle, -16, &H94C80080: DrawMenuBar Handle 'on remet la caption au userform MsgBox "capture effectuée" & vbCrLf & chemin End Sub
vous auriez une solution?
Partager