• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Userform Ekran Görüntüsü Alma,

Katılım
17 Mart 2022
Mesajlar
281
Excel Vers. ve Dili
2016/Türkçe
Merhaba,
Userform ekranımdan sık sık ekran görüntüsü alarak maile ekliyor ve iletiyorum.
Userform üzerine copi al butonu ile userform ekranının ekran görüntüsünü alabilmemiz mümkün müdür?
Kod kısmında kıymetli desteklerinizi talep ederim.
Ekte örnek dosya mevcuttur.
 

Ekli dosyalar

Şöyle bir konu buldum:

 
@YUSUF44 Hocam Merhaba,
Dönüşün ve ilgin için teşekkür ederim.
Bu konuyu okudum ve uyguladım bu konuda ki paylaşılan kod ekran görüntüsünü alıyor ve outlooku açarak ekliyor.
Burada ben outlooka yapıştırmasını ve outlooku açmasını istemiyorum.

Şöyle izah edeyim bana gelen maillere tümünü yanıtla diyerek cevap veriyorum ve ekran alıntısı aracı ile ekran görüntüsü alarak kendim ekliyorum. Fakat bahsi geçen uygulamada ayrıca bir mail oluşturuyor. Diğer sayfalardaki kodlarda ayrıca çalışmıyor hata veriyor.

Outlooku ve maili unutalım. Userformun ekran görüntüsünü alabilmemizin oluru var mıdır?
Var ise yardımlarınızı talep ederim.
 
Son düzenleme:
Ordan anladığım Alt+PrintScreen tuş kombinasyonunun ekrandaki userformun görüntüsünü almayı sağlıyor ve orda da o işlemin kod hali paylaşılmış. Ancak ben o kodları nedense uygulayamadım. Declare kodlarını modüle ekleyip, command buttona diğer kodları ekleyince keybdevent kodunu bulamadığına dair hata veriyor. Declare kodlarını userforma ekleyince ise hiç çalışmıyor.

Ancak bu sitede bulduğum çözümü uygulayabildim. Tabi bazı kodlarda değişiklik yaptım ve userform görüntüsünü aynı sayfaya yapıştırabildim. Yapıştırma kısmını siz nasıl olsa istediğiniz gibi düzenleyebilirsiniz.

Bunun için dosyaya bir modül ekleyin ve aşağıdaki kodları modüle yapıştırın:

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

'Public Const VK_SNAPSHOT = &H2C

Public Const VK_SNAPSHOT = 44
Public Const VK_LMENU = 164
Public Const KEYEVENTF_KEYUP = 2
Public Const KEYEVENTF_EXTENDEDKEY = 1

Burdaki ptrsafe ifadesini 64 bit kullandığım için ben ekledim, eklemezsem hata veriyor.

Userformdaki commandbutton kodlarını da aşağıdakiyle değiştirin:

PHP:
Private Sub CommandButton1_Click()
' keybd_event VK_SNAPSHOT, 0, 0, 0
DoEvents
keybd_event VK_LMENU, 0, _
KEYEVENTF_EXTENDEDKEY, 0 ' key down
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
DoEvents
'Workbooks.Add
'Application.Wait Now + TimeValue("00:00:01")
'ActiveSheet.PasteSpecial Format:="Bitmap", _
'Link:=False, DisplayAsIcon:=False
ActiveSheet.Range("A1").Select
ActiveSheet.Paste
'ActiveWindow.SelectedSheets.PrintOut Copies:=1
'ActiveWorkbook.Close False
End Sub

Kendinize göre güncellersiniz inşallah.
 
@YUSUF44 Hocam Selam,
İşlem tamam, desteğin için çok teşekkür ederim.
Bilgi amaçlı paylaşıyorum;

ActiveSheet.Range("A1").Select
ActiveSheet.Paste

Bu kısmı sildim. Butona tıkladığımda formun kopyasını alıyor ve sonrasında istediğin yere yapıştır.

Tekrardan teşekkür eder, hayırlı akşamlar dilerim.
 
Sn. TiOr,

Merhabalar, rica etsem dosyanızın son şeklini eklemeniz mümkün mü?
İlgi ve yardımınız için önceden teşekkürler.

Saygılar,
Selim
 
Sn. TiOr,

Merhabalar, rica etsem dosyanızın son şeklini eklemeniz mümkün mü?
İlgi ve yardımınız için önceden teşekkürler.

Saygılar,
Selim

Merhaba, Sn. @assenucler ;
Ekte örnek dosyamı paylaşıyorum.
CommandButton1 tıkladığınızda karşınıza gelecek olan userformda copi al butonuna tıklıyoruz. Userformun ekran görüntüsünü almaktadır. Akabinde userformdan çıkarak ctrl+v yaptığınızda excele ekran görüntüsünü yapıştırdığını göreceksiniz. Aynı şekilde mail gövdesine de yapıştırma işlemini rahatlıkla yapabilmekteyiz.
Bu vesile ile tekrardan @YUSUF44 hocama desteği için teşekkür ederim.
Çok basit ve saçma gibi görülen bazı uygulamalar ciddi bir zaman tasarrufu sağlamaktadır.
İyi günlerde kullanmanız temennisi ile, hayırlı günler ve şimdiden hayırlı bayramlar dilerim.
 

Ekli dosyalar

Bu durumda aşağıdaki kodlarda işe yarayacaktır.

C++:
Option Explicit

Private Sub CommandButton1_Click()
    Application.SendKeys "(%{1068})"
    DoEvents
    Unload Me
End Sub
 
@Korhan Ayhan Hocam Selam,
Bilgi için teşekkür ederim. Kod arşivime aldım :)
Şimdiden hayırlı bayramlar, sağlıcakla kalın.
 
@TiOr


Paylaşımınız ve emeği geçen üstatlara teşekkür ederim. Allah razı olsun.


Ben de bugünden Ramazan Bayramınızı kutlar, sağlık ve afiyetler ile bol rızıklar dilerim.

Saygılar,
Selim
 
@sayın Korhan Ayhan,

Yukarıda 8. iletiye eklediğiniz kodu hangi durumda kullanabilirim?
Selam ve sevgiler.

Saygılar,
Selim
 
Merhaba Selim Bey, @assenucler
@Korhan Ayhan hocama yardımcı olmak maiyetinde revize dosyayı ekledim.
Userformun kod kısmındaki kodu silip Ayhan hocamın paylaşmış olduğu kodu ekleyebilirsiniz.
Buradaki fark anladığım kadarıyla copi al dediğimizde userformu kapatıyor. Userform kapanınca excele bir kere tıklamanız gerekli yapıştırmak için tabi bu excel için geçerli. Farklı platformda da yapıştırma işlemini gerçekleştiriyor hiç bir problem yok.
Bildiğim kadarıyla paylaştım.
Hayırlı akşamlar...
 

Ekli dosyalar

Yusuf beyin paylaşımında api kullanılmış. Benim önerimde api yok. Tek fark budur.
 
Bu durumda aşağıdaki kodlarda işe yarayacaktır.

C++:
Option Explicit

Private Sub CommandButton1_Click()
    Application.SendKeys "(%{1068})"
    DoEvents
    Unload Me
End Sub
Korhan Hocam yukarıda vermiş olduğunuz kod ile alınan ekran görüntüsünü;
Excel sayfası içerisinde bir hücreye yapıştırmak ve sonra bu görselin boyutunu ayarlamak konusunda bir çözüm öneriniz var mıdır?

teşekkürler,
iyi çalışmalar.
 
Ordan anladığım Alt+PrintScreen tuş kombinasyonunun ekrandaki userformun görüntüsünü almayı sağlıyor ve orda da o işlemin kod hali paylaşılmış. Ancak ben o kodları nedense uygulayamadım. Declare kodlarını modüle ekleyip, command buttona diğer kodları ekleyince keybdevent kodunu bulamadığına dair hata veriyor. Declare kodlarını userforma ekleyince ise hiç çalışmıyor.

Ancak bu sitede bulduğum çözümü uygulayabildim. Tabi bazı kodlarda değişiklik yaptım ve userform görüntüsünü aynı sayfaya yapıştırabildim. Yapıştırma kısmını siz nasıl olsa istediğiniz gibi düzenleyebilirsiniz.

Bunun için dosyaya bir modül ekleyin ve aşağıdaki kodları modüle yapıştırın:

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

'Public Const VK_SNAPSHOT = &H2C

Public Const VK_SNAPSHOT = 44
Public Const VK_LMENU = 164
Public Const KEYEVENTF_KEYUP = 2
Public Const KEYEVENTF_EXTENDEDKEY = 1

Burdaki ptrsafe ifadesini 64 bit kullandığım için ben ekledim, eklemezsem hata veriyor.

Userformdaki commandbutton kodlarını da aşağıdakiyle değiştirin:

PHP:
Private Sub CommandButton1_Click()
' keybd_event VK_SNAPSHOT, 0, 0, 0
DoEvents
keybd_event VK_LMENU, 0, _
KEYEVENTF_EXTENDEDKEY, 0 ' key down
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
DoEvents
'Workbooks.Add
'Application.Wait Now + TimeValue("00:00:01")
'ActiveSheet.PasteSpecial Format:="Bitmap", _
'Link:=False, DisplayAsIcon:=False
ActiveSheet.Range("A1").Select
ActiveSheet.Paste
'ActiveWindow.SelectedSheets.PrintOut Copies:=1
'ActiveWorkbook.Close False
End Sub

Kendinize göre güncellersiniz inşallah.


Bu sorunun aynısını bende yaşamaktayım. Userform içerisinde günlük, haftalık, aylık kayıt yapılan verileri kopyalayamadıklarından dolayı sürekli ekran görüntüsü ile işlem yapılmakta. Paylaşmış olduğunuz kodu uygulamak istediğimde hata almaktayım. Nerede hata yapmaktayım yada ne düzeltmem gerekiyor yardımcı olabilirmisiniz?
Teşekkür ederim.
 
Korhan Hocam yukarıda vermiş olduğunuz kod ile alınan ekran görüntüsünü;
Excel sayfası içerisinde bir hücreye yapıştırmak ve sonra bu görselin boyutunu ayarlamak konusunda bir çözüm öneriniz var mıdır?

teşekkürler,
iyi çalışmalar.

Eki deneyiniz.
 

Ekli dosyalar


Korhan Bey sizin hazırladığınız kod'a Userform'un tamamı değil de mesela iki adet "textBox" var. O ikisini kopyasını alacak şekilde ve UserForm kapanmadan "Yusuf44" Beyin kod mantığı ile düzenleyebilirmiyiz? Biz idtediğimiz yere yapıştırmak (hatta word dosyası) için.
 
Benim önerimde form kapanmak durumunda..

Form kapanmasın istiyorsanız diğer çözümü kullanabilirsiniz.
 
Benim önerimde form kapanmak durumunda..

Form kapanmasın istiyorsanız diğer çözümü kullanabilirsiniz.
Korhan Bey ilginize teşekkür ederim.
Ama benim asıl istediğim kod'un komple ekran görüntüsünü almak değil de; formda iki tane TextBox var. O iki textbox daki görüntüyü kopyalaması.
Bu olabilir mi. Buna bağlı olarak form kapanmasın dedim. Yani TextBox lardaki görüntüyü kopyalayacak ve ben farklı uygulamaya yapıştırabileceğim.
Tekrar teşekkürler.
 
Geri
Üst