Page 1 of 1

VBA : PRTSC

Posted: Sun Apr 09, 2023 8:53 pm
by Supachok
เรียน ท่านอาจารย์

1.ต้องการ PRTSC
2.save to Clipboard.
3.Paste active sheet.
3.1 หรือ paste ลง body mail.

พยายามปรับหลายสูตรไม่สามารถสำเร็จได้
สูตรล่าสุด VBA paste ตั้งแต่ DIM ที่ประกาศตัวแปร ทำอย่างไร VBA จะรู้ว่าต้องการ Paste ข้อมูลจาก PRTSC
ปล. Mydata ไม่สามารถใช้ MSfrom ได้ run VBA แล้วฟ้อง



Dim MyData As Object
Set MyData = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
Application.SendKeys "{PRTSC}"
MyData.GetFromClipboard
Range("b1").Select
ActiveSheet.Paste


Re: VBA : PRTSC

Posted: Mon Apr 10, 2023 7:54 am
by snasui
:D กรุณา Post Code VBA ด้วยการครอบด้วย Tag Code ดูวิธีการในกฎการใช้บอร์ดข้อ 5 ด้านบนครับ :roll:

Re: VBA : PRTSC

Posted: Mon Apr 10, 2023 9:51 am
by Supachok
snasui wrote: Mon Apr 10, 2023 7:54 am :D กรุณา Post Code VBA ด้วยการครอบด้วย Tag Code ดูวิธีการในกฎการใช้บอร์ดข้อ 5 ด้านบนครับ :roll:



Sub Macro4()

Dim MyData As Object
Set MyData = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
Application.SendKeys "{PRTSC}"
MyData.GetFromClipboard
Range("b1").Select
ActiveSheet.Paste

End Sub


ไม่ค่อยเข้าใจว่าผมทำไม่ถูกตรงไหน แต่ลองใส่ Code มาใหม่แล้วครับ

Re: VBA : PRTSC

Posted: Mon Apr 10, 2023 9:55 am
by snasui
:D ยังไม่ถูกครับ

กรุณาคลิก Link ที่ท้ายข้อ 5 เพื่อดูวิธีการที่ถูกต้องครับ

TagCode.jpg

ที่ทำมาเป็นแบบ Inline ซึ่งไม่ถูกต้องครับ

InlineCode.jpg

Re: VBA : PRTSC

Posted: Mon Apr 10, 2023 11:44 am
by Supachok
เรียน ท่านอาจารย์

ออ ต้องเติมอักษรให้เต็ม จากตัวย่อจึงจะแสดง Select all

Code: Select all

Sub Macro4()

Dim MyData As Object
Set MyData = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
Application.SendKeys "{PRTSC}"
MyData.GetFromClipboard
Range("b1").Select
ActiveSheet.Paste
End Sub


Re: VBA : PRTSC

Posted: Mon Apr 10, 2023 12:46 pm
by snasui
:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Option Explicit

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

Private Const VK_SNAPSHOT = &H2C

Sub PrintScreen()
    Call Macro4
    keybd_event VK_SNAPSHOT, 1, 0, 0
    Range("b1").Select
    ActiveSheet.Paste
End Sub


Sub Macro4()
    '
    ' Macro4 Macro
    Dim MyData As Object
    Set MyData = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    Dim path As String
    path = "C:\Users\<user>\AppData\Local\Microsoft\Teams\current\Teams.exe" ' Replace <username> with your actual username
    Shell path, vbNormalFocus
'    Application.SendKeys "{PRTSC}"
'    MyData.GetFromClipboard
'    Range("b1").Select
    'ActiveSheet.Paste
'    Application.SendKeys "^v"
End Sub