:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser
🪷 คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ

รบกวนอาจารย์ ช่วยเรื่อง Code VB ตรวจสอบการลบและแทรกรูปภาพด้ว

ฟอรัมถาม-ตอบปัญหาการใช้งาน Macro และ VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
User avatar
tigerwit
Silver
Silver
Posts: 555
Joined: Wed Mar 31, 2010 10:51 pm
Location: สกลนคร
Excel Ver: 2019
Contact:

รบกวนอาจารย์ ช่วยเรื่อง Code VB ตรวจสอบการลบและแทรกรูปภาพด้ว

#1

Post by tigerwit »

ข้อมูลรายละเอียดตามไฟล์ที่แนบมา

1. ถ้าไม่มีรูปตราโรงเรียน(picture 46) แล้วผู้ใช้โปรแกรมไปคลิกปุ่มลบตราโรงเรียน ให้โปรแกรมแจ้งว่าไม่มีรูปให้ลบ แล้วกลับมาที่หน้าเดิม
2. กรณีมีตราโรงเรียนอยู่แล้ว แล้วผู้ใช้โปรแกรมคลิกปุ่มเปลี่ยนตราโรงเรียนโดยไม่ลบรูปออกก่อน ให้โปรแกรมตรวจสอบ แล้วแจ้งว่ามีรูปตราโรงเรียนอยู่ ให้ลบรูปออกก่อน
Attachments
PP51.rar
(147.51 KiB) Downloaded 29 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31190
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รบกวนอาจารย์ ช่วยเรื่อง Code VB ตรวจสอบการลบและแทรกรูปภา

#2

Post by snasui »

:D ไม่ทราบกระทู้นี้ได้คำตอบแล้วยังครับ :arrow: viewtopic.php?f=3&t=1662
User avatar
tigerwit
Silver
Silver
Posts: 555
Joined: Wed Mar 31, 2010 10:51 pm
Location: สกลนคร
Excel Ver: 2019
Contact:

Re: รบกวนอาจารย์ ช่วยเรื่อง Code VB ตรวจสอบการลบและแทรกรูปภา

#3

Post by tigerwit »

ได้ดูแล้วครับ
แต่.....บอกตามตรงเลยครับว่า ปึก แป้นปีก งงมาก ๆ
ก็เลยไปไม่เป็น สุดท้ายก็...หยุดพักไว้

สรุปว่าคำถามในกระทู้นี้ ต้องเข้าใจกระทู้นั้นด้วยใช่ไหมครับ
จะได้กลับไปพยายามศึกษาอีกรอบ
User avatar
snasui
Site Admin
Site Admin
Posts: 31190
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รบกวนอาจารย์ ช่วยเรื่อง Code VB ตรวจสอบการลบและแทรกรูปภา

#4

Post by snasui »

:D ผมกลับไปตอบเพิ่มให้แล้วครับ สำหรับกระทู้นี้ดู Code ด้านล่างนี้เป็นตัวอย่างครับ

Code: Select all

Sub delpic()
' Macro001 Macro
' แมโครถูกบันทึก ณ วันที่ 25/10/2011 โดย หมู ภูดินแดง
    If ActiveSheet.Shapes("Picture 46") Is Nothing Then
        MsgBox "ไม่มีรูปให้ลบ"
        Exit Sub
    End If
    If MsgBox("คุณต้องการลบตราโรงเรียน?", 36, "ยืนยันการลบ") = 6 Then
        ActiveSheet.Shapes("Picture 46").Select
        Selection.Delete
         Cancel = True
    End If
End Sub
Sub ChPic()
'
' Macro005 Macro
' แมโครถูกบันทึก ณ วันที่ 25/10/2011 โดย หมู ภูดินแดง
    Dim Ans As Integer
    If Not ActiveSheet.Shapes("Picture 46") Is Nothing Then
        Ans = MsgBox("มีรูปอยู่แล้วต้องการลบหรือไม่", vbYesNo)
    End If
    If Ans = vbYes Then
        ActiveSheet.Shapes("picture 46").Delete
        ActiveSheet.Pictures.Insert("C:\PP51\pic\pd.jpg").Name = "picture 46"
        ActiveSheet.Shapes("picture 46").Select
        Range("B1").Select
    End If
End Sub
User avatar
tigerwit
Silver
Silver
Posts: 555
Joined: Wed Mar 31, 2010 10:51 pm
Location: สกลนคร
Excel Ver: 2019
Contact:

Re: รบกวนอาจารย์ ช่วยเรื่อง Code VB ตรวจสอบการลบและแทรกรูปภา

#5

Post by tigerwit »

Err ครับ
ตอนที่มีรูปตราโรงเรียน โปรแกรมรันได้
พอลบรูปไปแล้ว
และคลิกที่ปุ่ม โปรแกรมมีปัญหาครับ
Attachments
err.png
err.png (49.85 KiB) Viewed 186 times
User avatar
tigerwit
Silver
Silver
Posts: 555
Joined: Wed Mar 31, 2010 10:51 pm
Location: สกลนคร
Excel Ver: 2019
Contact:

Re: รบกวนอาจารย์ ช่วยเรื่อง Code VB ตรวจสอบการลบและแทรกรูปภา

#6

Post by tigerwit »

ไฟล์ครับ
Attachments
Book31.xls
(50 KiB) Downloaded 8 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31190
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รบกวนอาจารย์ ช่วยเรื่อง Code VB ตรวจสอบการลบและแทรกรูปภา

#7

Post by snasui »

:D ลองปรับเป็น Loop เพื่อหาชื่อ Picture 46 ตามด้านล่างดูครับ

Code: Select all

Sub delpic()
' Macro001 Macro
' แมโครถูกบันทึก ณ วันที่ 25/10/2011 โดย หมู ภูดินแดง
    Dim i As Integer
    Dim obj As Object
    For Each obj In ActiveSheet.Shapes
        If obj.Name = "Picture 46" Then
            i = 1
        End If
    Next obj
    If i = 0 Then
        MsgBox "ไม่มีรูปให้ลบ"
        Exit Sub
    End If
    If MsgBox("คุณต้องการลบตราโรงเรียน?", 36, "ยืนยันการลบ") = 6 Then
        ActiveSheet.Shapes("Picture 46").Select
        Selection.Delete
'         Cancel = True
    End If
End Sub
Sub ChPic()
' Macro001 Macro
' แมโครถูกบันทึก ณ วันที่ 25/10/2011 โดย หมู ภูดินแดง
    Dim i As Integer
    Dim obj As Object
    For Each obj In ActiveSheet.Shapes
        If obj.Name = "Picture 46" Then
            i = 1
        End If
    Next obj
    If i = 1 Then
        Ans = MsgBox("มีรูปอยู่แล้วต้องการลบหรือไม่", vbYesNo)
    End If
    If Ans = vbYes Then
        ActiveSheet.Shapes("picture 46").Delete
    End If
    ActiveSheet.Pictures.Insert("C:\PP51\pic\pd.jpg").Name = "picture 46"
    ActiveSheet.Shapes("picture 46").Select
    Range("B1").Select
End Sub
User avatar
tigerwit
Silver
Silver
Posts: 555
Joined: Wed Mar 31, 2010 10:51 pm
Location: สกลนคร
Excel Ver: 2019
Contact:

Re: รบกวนอาจารย์ ช่วยเรื่อง Code VB ตรวจสอบการลบและแทรกรูปภา

#8

Post by tigerwit »

ปรับแก้นิดหน่อย ได้แล้วครับ
ขอบพระคุณมากครับ
User avatar
tigerwit
Silver
Silver
Posts: 555
Joined: Wed Mar 31, 2010 10:51 pm
Location: สกลนคร
Excel Ver: 2019
Contact:

Re: รบกวนอาจารย์ ช่วยเรื่อง Code VB ตรวจสอบการลบและแทรกรูปภา

#9

Post by tigerwit »

เรียนถามต่อว่า...
จากโค๊ดนี้
Sub ChPic()
Dim i As Integer
Dim obj As Object
For Each obj In ActiveSheet.Shapes
If obj.Name = "Picture 46" Then
i = 1
End If
Next obj
If i = 1 Then
Ans = MsgBox("มีรูปอยู่แล้วต้องการลบหรือไม่", vbYesNo)
End If
If Ans = vbYes Then
ActiveSheet.Shapes("picture 46").Delete
End If
ActiveSheet.Pictures.Insert("C:\PP51\pic\pd.jpg").Name = "picture 46"
ActiveSheet.Shapes("picture 46").Select
Range("B1").Select
End Sub
หากเราต้องการให้ผู้ใช้โปรแกรมสามารถเลือกไฟล์รูปภาพเป็นชื่ออื่น จากโฟลเดอร์ C:\PP51\pic เพื่อแทรกรูป แทนที่จะกำหนดให้ต้องเป็นชื่อ pd.jpg อย่างเดียว

จะต้องปรับโค๊ดอย่างไรครับ
User avatar
tigerwit
Silver
Silver
Posts: 555
Joined: Wed Mar 31, 2010 10:51 pm
Location: สกลนคร
Excel Ver: 2019
Contact:

Re: รบกวนอาจารย์ ช่วยเรื่อง Code VB ตรวจสอบการลบและแทรกรูปภา

#10

Post by tigerwit »

พอดีไปเจอโค๊ดจากเว็บ http://www.mrexcel.com/archive/General/4711.html ซึ่งตรงกับความต้องการ
แต่มีปัญหานิดหน่อย...
จากไฟล์ที่แนบมา หลังจากแทรกรูปภาพแล้ว มันมีการสั่งให้ล็อค Sheet ผมพยายามดูแต่ละบรรทัดแล้ว ไม่รู้ว่าบรรทัดไหนสั่งให้ล็อค sheet
อาจารย์ช่วยดูหน่อยครับ
Attachments
inspic.xls
(24.5 KiB) Downloaded 13 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31190
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รบกวนอาจารย์ ช่วยเรื่อง Code VB ตรวจสอบการลบและแทรกรูปภา

#11

Post by snasui »

:D บรรทัดสำหรับการ Protect ตามด้านล่างครับ

Code: Select all

ActiveSheet.Protect True, True, True, True, True
User avatar
tigerwit
Silver
Silver
Posts: 555
Joined: Wed Mar 31, 2010 10:51 pm
Location: สกลนคร
Excel Ver: 2019
Contact:

Re: รบกวนอาจารย์ ช่วยเรื่อง Code VB ตรวจสอบการลบและแทรกรูปภา

#12

Post by tigerwit »

ขอบคุณครับ..
อาจารย์ เราจะรู้ได้อย่างไรว่า รหัสปลดการป้อง sheet จากโค๊ดนี้คืออะไร ครับ
User avatar
tigerwit
Silver
Silver
Posts: 555
Joined: Wed Mar 31, 2010 10:51 pm
Location: สกลนคร
Excel Ver: 2019
Contact:

Re: รบกวนอาจารย์ ช่วยเรื่อง Code VB ตรวจสอบการลบและแทรกรูปภา

#14

Post by tigerwit »

:rz: ผมเคยลองแล้ว แต่ไม่ผ่าน เพราะเป็นตัวเล็กทั้งหมด
เีรียนถามว่า ทำไมถึงเป็นตัวใหญ่ครับ ในเมื่อ
ActiveSheet.Protect True, True, True, True, True
มันก็เป็นตัวเล็ก
อาจารย์พออธิบายได้ไหมครับ

และขอนำแนะนำต่อเลยครับ
มีปัญหา ติดตรงที่เมื่อยกเลิกไม่แทรกรูปแล้ว sheet ไม่ lock ให้
รายละเอียดต่าง ๆ อยู่ในไฟล์ครับ
Attachments
PP5.rar
(54.58 KiB) Downloaded 4 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31190
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รบกวนอาจารย์ ช่วยเรื่อง Code VB ตรวจสอบการลบและแทรกรูปภา

#15

Post by snasui »

tigerwit wrote:ผมเคยลองแล้ว แต่ไม่ผ่าน เพราะเป็นตัวเล็็็กทั้งหมด
เีรียนถามว่า ทำไมถึงเป็นตัวใหญ่ครับ ในเมื่อ
ActiveSheet.Protect True, True, True, True, True
มันก็เป็นตัวเล็ก
อาจารย์พออธิบายได้ไหมครับ
:D เนื่องจาก True และ False เป็น Keyword ของ โปรแกรม ดังนั้นการนำไปกำหนดค่า Password ในลักษณะตรงตัวเช่นนั้นจึงไม่สามารถทำได้ โปรแกรมจึงแปลงให้เป็น TRUE

สำหรับ Keyword ทั้งหมดดูได้จากที่นี่ครับ :arrow: VBA Keyword

ส่วน Code ที่ถามมา ลองปรับเป็นตามด้านล่างครับ

Code: Select all

Sub InsPic2()
    'Code From..
    'http://www.snasui.com/viewtopic.php?f=3&t=1768
    'http://www.mrexcel.com/archive/General/4711.html
    'http://www.ozgrid.com/forum/showthread.php?t=24068
    
    Const strPath As String = "D:\" '<== Change to your path
    Dim Imge
    Dim ImgFileFormat As String
    Dim i As Integer
    Dim obj As Object
    For Each obj In ActiveSheet.Shapes
        If obj.Name = "picture 46" Then
            i = 1
        End If
    Next obj
    If i = 1 Then
'        ChDrive strPath
        ChDir strPath
        ImgFileFormat = "Image Files (*.jpg),*.jpg"
        Imge = Application.GetOpenFilename(ImgFileFormat)
        If Imge <> "False" Then
            ActiveSheet.Unprotect Password = "1"
            ActiveSheet.Shapes("picture 46").Delete
            ActiveSheet.Pictures.Insert(Imge).Name = "picture 46"
            ActiveSheet.Protect Password = "1"
        End If
    End If
End Sub
User avatar
tigerwit
Silver
Silver
Posts: 555
Joined: Wed Mar 31, 2010 10:51 pm
Location: สกลนคร
Excel Ver: 2019
Contact:

Re: รบกวนอาจารย์ ช่วยเรื่อง Code VB ตรวจสอบการลบและแทรกรูปภาพด้ว

#16

Post by tigerwit »

Code: Select all

Sub InsPic2()
    'Code From..
    'http://www.snasui.com/viewtopic.php?f=3&t=1768
    'http://www.mrexcel.com/archive/General/4711.html
    'http://www.ozgrid.com/forum/showthread.php?t=24068
   
    Const strPath As String = "D:\" '<== Change to your path
    Dim Imge
    Dim ImgFileFormat As String
    Dim i As Integer
    Dim obj As Object
    For Each obj In ActiveSheet.Shapes
        If obj.Name = "picture 46" Then
            i = 1
        End If
    Next obj
    If i = 1 Then
'        ChDrive strPath
        ChDir strPath
        ImgFileFormat = "Image Files (*.jpg),*.jpg"
        Imge = Application.GetOpenFilename(ImgFileFormat)
        If Imge <> "False" Then
            ActiveSheet.Unprotect Password = "1"
            ActiveSheet.Shapes("picture 46").Delete
            ActiveSheet.Pictures.Insert(Imge).Name = "picture 46"
            ActiveSheet.Protect Password = "1"
        End If
    End If
End Sub
จากโค๊ดนี้ครับ

ถ้าต้องการให้สามารถเลือกไฟล์รูปภาพอื่นเช่น bmp png tif
จะต้องแก้ไขโค๊ดอย่างไรครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31190
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รบกวนอาจารย์ ช่วยเรื่อง Code VB ตรวจสอบการลบและแทรกรูปภาพด้ว

#17

Post by snasui »

:D ตัวอย่าง Code ครับ

Code: Select all

'...other code...
        ImgFileFormat = "Image Files (*.jpg*),*.jpg*"
        ImgFileFormat = ImgFileFormat & ",PNG Files (*.png*),*.png*"
        ImgFileFormat = ImgFileFormat & ",BMP Files (*.bmp*),*.bmp*"
'...other code...
User avatar
tigerwit
Silver
Silver
Posts: 555
Joined: Wed Mar 31, 2010 10:51 pm
Location: สกลนคร
Excel Ver: 2019
Contact:

Re: รบกวนอาจารย์ ช่วยเรื่อง Code VB ตรวจสอบการลบและแทรกรูปภาพด้ว

#18

Post by tigerwit »

สวัสดีครับ
ลองแก้ไขแล้วตามคำแนะนำ
ยังคงเห็นเฉพาะไฟล์ .jpg เท่านั้นครับ
Attachments
PP5.1.xlsm
(33.71 KiB) Downloaded 9 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31190
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รบกวนอาจารย์ ช่วยเรื่อง Code VB ตรวจสอบการลบและแทรกรูปภาพด้ว

#19

Post by snasui »

:D ในเครื่องผมเห็นทั้งสามนามสกุลไฟล์ตามภาพครับ
Attachments
FileFilter
FileFilter
FileFilter.png (83.52 KiB) Viewed 69 times
User avatar
tigerwit
Silver
Silver
Posts: 555
Joined: Wed Mar 31, 2010 10:51 pm
Location: สกลนคร
Excel Ver: 2019
Contact:

Re: รบกวนอาจารย์ ช่วยเรื่อง Code VB ตรวจสอบการลบและแทรกรูปภาพด้ว

#20

Post by tigerwit »

สวัสดีครับ
เห็นทุกไฟล์แล้วครับ
ขอบคุณครับ
พอดีมีปัญหาจากคำถามนี้ครับ
หลังจากแทรกรูปแล้ว เราใช้งานในเครื่อง
เห็นรูปที่แทรกเป็นปกติ
แต่พอเรา copy ไฟล์ excel นี้ ไปใช้กับเครื่องอื่น
กลายเป็นว่ารูปที่แทรกนั้นกลับไม่เห็น
ดังภาพประกอบ
pic.jpg
pic.jpg (43.18 KiB) Viewed 55 times
จะแก้ไขอย่างไงครับให้เห็นรูปที่แทรก โดยที่ไม่ต้อง copyไฟล์รูปภาพตามไปที่เครื่องอื่น
Post Reply