Printscreen din VBA

Închis
Dr. Cloud
Mesaje: 3327
Membru din: Mar Oct 02, 2012 11:19 am

Printscreen din VBA

Mesaj de Dr. Cloud » Mie Oct 21, 2009 5:50 pm

Am urmatorul cod:

Cod: Selectaţi tot

Option Explicit

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


Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_SNAPSHOT = &H2C
Private Const VK_MENU = &H12


Sub PrintScreen()
On Error GoTo err
   'Pt. intregul ecran
    keybd_event VK_SNAPSHOT, 1, 0, 0
    Exit Sub
    
err:
    Eroare
End Sub


Sub PrintScreenActiveWindow()
On Error GoTo err
    'Pt. fereastra activa
    keybd_event VK_MENU, 0, 0, 0
    keybd_event VK_SNAPSHOT, 0, 0, 0
    keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0
    keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0
    Exit Sub
    
err:
    Eroare
End Sub
Acest cod face printscreen fie la fereastra activa fie la tot ecranul.
Mi-am stors creierii ca sa gasesc o metoda de a salva elementul copiat in clipboard intro poza *.jpg sau *.bmp, etc (orice format este bun).
Astept si eu o sugestie.

Multumesc!

Dr.Windows
Moderator
Moderator
Mesaje: 4570
Membru din: Vin Iul 31, 2009 7:32 am

Re: Printscreen din VBA

Mesaj de Dr.Windows » Joi Oct 22, 2009 9:10 am

Am gasit o functie PastePicture pe site-ul Stephen Bullen's Excel Page iar daca importi acel modul modPastePicture.bas in proiectul tau, doar mai trebuie sa adaugi 2 linii inainte de a iesi din procedura sau unde doresti tu dupa ce ai pus imaginea in clipboard:

Cod: Selectaţi tot

    Application.Wait Now + TimeSerial(0, 0, 1)
    SavePicture PastePicture(xlBitmap), "C:\Test.bmp"

Dr. Cloud
Mesaje: 3327
Membru din: Mar Oct 02, 2012 11:19 am

Re: Printscreen din VBA

Mesaj de Dr. Cloud » Joi Oct 22, 2009 12:06 pm

Eh uite ce-mi lipsea mie.
Partea asta de cod o aveam, dar mereu primeam eroare la PastePicture.

Cod: Selectaţi tot

SavePicture PastePicture(xlBitmap), "C:\Test.bmp"
O sa import acel modul cand ajung acasa.
Dar intre timp am mai facut doua lucruri.
Poza care o face la ecran: i-am bagat o linie de cod sa o ataseze in documentul curent.
Si o alta metoda: am apelat functia Shell care la randul ei imi apela o aplicatie facuta de mine, ce facea captura la ecran si salva poza automat.

Închis

Înapoi la “Visual Basic for Application (VBA) - Intrebari tehnice”