: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

V-LookUp + VBA ดึงรูป

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
sup
Member
Member
Posts: 136
Joined: Mon Sep 13, 2010 11:36 am

V-LookUp + VBA ดึงรูป

#1

Post by sup »

สวัสดีครับอาจารย์ และกูรูทุกท่านครับ

ก็มีเรื่องมารบกวนอีกแล้วครับ พยายามศึกษาอยู่หลายวัน ก็ยังไม่ค่อยเข้าใจเท่าไร เลยต้องเข้ามาขอความช่วยเหลือครับ
ผมได้สร้างไฟล์ Excel ที่ใช้ V-LookUp ดึงข้อมูลมาแสดง ใน Sheet1 โดยใส่รหัสที่ O1 และในส่วนของข้อมูลที่ดึงมาจะมีรหัสรูปแสดง ก็ให้ดึงรูปจากโฟลเดอร์ Pic ที่เก็บที่ไดร์ฟ D มาโชว์ ครั้งละหลายๆรูป(มากสุด 50 รูป) ผมเอา Code จากที่ได้มาจาก Forum นี้หละครับมาปรับปรุง ปรากฎว่าติดปัญหาบางส่วน เลยต้องขอความช่วยเหลือดังนี้ครับ
1. ต้องคลิ๊ก Run ทุกครั้งเพื่อให้รูปถูกดึงมาโชว์ อยากให้เมื่อเรา Enter ที่ O1 แล้ว พอข้อมูลถูกดึงมา รูปก็ถูกดึงมาด้วยทันทีครับ ตามรหัสที่แสดง
2. เมื่อเปลี่ยนรหัสที่ O1 รูปใหม่ถูกดึงมา(ต้องคลิ๊ก Runเหมือนเดิม) แต่ซ้อนทับรูปเก่า อยากให้รูปเก่าถูกลบไปก่อนครับ แล้วรูปใหม่ก็ถูกดึงมาโชว์ ผมแก้ไข Code หลายวิธีแล้วครับก็ยังไม่สำเร็จ เลยไม่แน่ใจว่าถูกหรือไม่
3. กรณีที่ไม่มีรูปตามรหัสที่ปรากฎอยากให้แสดงเป็นข้อความในส่วนที่โชว์รูปครับว่า "ไม่พบรูปที่เรียก"

ผมได้แนบไฟล์ทดสอบ และไฟล์รูปมาครับ Code จะอยู่ใน Module1 และ Sheet1 ครับ

ต้องรบกวนขอคำชี้แนะด้วยครับ

ขอบคุณล่วงหน้าครับ

ช่วงนี้ฝนตกบ่อย ขอให้ทุกท่านสุขภาพแข็งแรงครับ
You do not have the required permissions to view the files attached to this post.
sup
Member
Member
Posts: 136
Joined: Mon Sep 13, 2010 11:36 am

Re: V-LookUp + VBA ดึงรูป

#2

Post by sup »

พยายามส่งรูปอยู่ครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30919
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: V-LookUp + VBA ดึงรูป

#3

Post by snasui »

:D ที่ Link นี้มี Code สำหรับการลบรูปเก่าทิ้งไปอยู่ด้วยครับ http://snasui.blogspot.com/2011/05/folder-excel.html กรณีที่้ต้องการให้เปลียน O1 แล้ว Code ทำงาน ใน Sheet1 ปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$O$1" Then
        Call ShowPicture
    End If
End Sub
sup
Member
Member
Posts: 136
Joined: Mon Sep 13, 2010 11:36 am

Re: V-LookUp + VBA ดึงรูป

#4

Post by sup »

ขอบคุณครับอาจารย์ ทดลองดึงได้ตามต้องการแล้วครับ ส่วนการลบ ต้องขอแกะ Code ก่อนครับ คืบหน้าอย่างไรจะมาแจ้งผลที่หลังครับ

อย่าลืมทานอาหารกลางวันด้วยครับ ของผม เป็นส้มตำกับครอบครัวครับ ภรรยาจัดให้
sup
Member
Member
Posts: 136
Joined: Mon Sep 13, 2010 11:36 am

Re: V-LookUp + VBA ดึงรูป

#5

Post by sup »

ใช้เวลามาค่อนวันนี้ ยังไม่สำเร็จครับอาจารย์ Code ตามข้างล่างนี้หากให้แสดงแค่รูปเดียวก็สามารถลบรูปเก่าออกก่อนได้ แต่เมื่อทำหลายรูปกลับทำไม่ได้ ก็เลยมึนครับ อาจารย์ช่วยแนะนำที่ครับ (ศึกษาตามLink ที่อาจารย์ให้มาหลายรอบแล้วก็ยังมึนครับ)

Code: Select all

Sub ShowPicture()
Dim r As String
Dim imgIcon
On Error Resume Next
    ActiveSheet.Shapes(1).Delete 'ลบรูปเก่า
r = Range("F4").Value
With Range("G4")
    Set imgIcon = ActiveSheet.Shapes.AddPicture( _
    Filename:="D:\Pic\" & r & ".jpg", LinkToFile:=False, _
    SaveWithDocument:=True, Left:=.Left, Top:=.Top, _
    Width:=180, Height:=138)
End With
Set imgIcon = Nothing
End Sub
ขอบคุณล่วงหน้าครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30919
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: V-LookUp + VBA ดึงรูป

#6

Post by snasui »

:D Code สำหรับลบรูปคือด้านล่างครับ

Code: Select all

'...    
Dim obj As Object
For Each obj In ActiveSheet.Shapes
    If Left(obj.Name, 4) = "Pict" Then
        obj.Delete
    End If
Next obj
'....
sup
Member
Member
Posts: 136
Joined: Mon Sep 13, 2010 11:36 am

Re: V-LookUp + VBA ดึงรูป

#7

Post by sup »

สวัสดีครับอาจารย์

ขอขอบคุณมากๆครับ ผมก็งมอยู่ตั้งนานเพราะคิดว่า Code ที่ใช้ลบมีเพียงแถวเดียว ที่ไหนได้เป็นชุด เลยทำให้ไม่สำเร็จ ผมใช้ Code ที่อาจารย์ให้มาแล้วก็ OK เลยครับ

แต่สงสัยว่าระหว่าง Code เก่าที่ใช้กับภาพเดียว กับ Code ชุดนี้แตกต่างกันอย่างไรครับ รบกวนอธิบายด้วยครับ เพราะเห็นมี If Left (obj.name,4) = "Pict" Then อยู่ด้วย ซึ่งเท่ากับให้ลบ object ทีมีชื่อ pict นำหน้าออก แต่ของผมไม่มี Pict ผลเลยไม่ได้หยิบมาใช้ด้วย ไม่ทราบว่าผมเข้าใจถูกต้องไหมครับ ต้องขอความกระจ่างครับ

ขอบคุณอีกครั้งครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30919
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: V-LookUp + VBA ดึงรูป

#8

Post by snasui »

:D Code นี้เป็นการ loop เพื่อลบทุก Object ที่มีชื่อนำหน้าว่า Pict ออกไปครับ สังเกต For Each...Next
sup
Member
Member
Posts: 136
Joined: Mon Sep 13, 2010 11:36 am

Re: V-LookUp + VBA ดึงรูป

#9

Post by sup »

เริ่มพอเข้าใจแล้วครับอาจารย์ ที่นี้ในกรณีที่หากไม่มีรูป ให้กราปฎข้อความ "ไม่มีรูปตามที่เรียก" จะใส่ Code ช่วงใดครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30919
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: V-LookUp + VBA ดึงรูป

#10

Post by snasui »

:D ตัวอย่าง Code ตามด้านล่างครับ

Code: Select all

'...
r = Range("I5").Text   'ตำแหน่งใส่ชื่อเรียกมา
If IsError(Range("I5")) Then
    MsgBox "Not found picture"
Else
    With Range("J5")  ' ตำแหน่งที่แสดงรูป
        Set imgIcon = ActiveSheet.Shapes.AddPicture( _
        Filename:="D:\Pic\" & r & ".jpg", LinkToFile:=False, _
        SaveWithDocument:=True, Left:=.Left, Top:=.Top, _
        Width:=180, Height:=138) 'กำหนดให้เริ่มจากซ้าย-บน และกำหนดขนาดกว้าง*สูงของรูปตำแหน่งการเก็บรูปที่ไดร์ฟ D :\ไฟล์ Pic\
    End With
End If
'....
sup
Member
Member
Posts: 136
Joined: Mon Sep 13, 2010 11:36 am

Re: V-LookUp + VBA ดึงรูป

#11

Post by sup »

ขอบคุณครับอาจารย์

เดี๋ยวจะทดลองดูครับ คืบหน้าอย่างไรจะมาแจ้งให้ทราบครับ ตอนนี้งานเดินมากขึ้นครับหลังจากติดเรื่องดึงรูปอยู่นาน คงมีเรื่องรบกวนสอบถามอีกครับ มองลู่ทางแล้วคงมีติดอีกบางเรื่องครับ ที่นอกเหนือจากรูป

อาจารย์อย่าลืมทานอาหารกลางวันด้วยนะครับ
sup
Member
Member
Posts: 136
Joined: Mon Sep 13, 2010 11:36 am

Re: V-LookUp + VBA ดึงรูป

#12

Post by sup »

สวัสดีครับอาจารย์
สรุปผลล่าสุดโค๊ตที่ใส่ให้บอกเมื่อไม่พบภาพตามรหัสที่เรียก ปรากฎว่าจะแสดง MsgBoxเยอะแยะไม่หมดเลยครับหากรูปหลายรูป ผมลองปรับโค๊ตดูแล้วก็ยังไม่เป็นผลครับ รบกวนอาจารย์อีกครั้งครับ อยากให้ออกมา ตามตัวอย่างในไฟล์แนบที่ผมใช้สูตรไว้ครับ คือแสดงข้อความใน Cell ที่วางภาพเลย หากรหัสนั้นไม่มีภาพอยู่ และหากไม่มีรหัสนั้น(ว่าง)ก็แสดงว่า "ว่าง" เลยครับ
อีกคำถามครับ ปกติเราสามารถเขียนโค๊ตให้ไปิดไฟล์ Excel ด้วยกันได้ แต่ในกรณีที่ต้องการให้เปิด PDF หรือ Word โดยมีปุ่ม CommandButton ให้คลิ๊ก จะทำได้ไหมครับ ต้องเขียนอย่างไรครับ

ต้องขอโทษครับที่รบกวนอีกครั้งหนึ่ง
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30919
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: V-LookUp + VBA ดึงรูป

#13

Post by snasui »

:D ให้เปลี่ยนสูตรเป็น เช่นตามด้านล่างครับ

=IF(ISNA(I5),"ไม่พบภาพตามรหัสที่เรียก","ว่าง")

Enter > Copy ไปยังเซลล์อื่น ๆ ที่เกี่ยวข้อง

ถ้าต้องการใช้ VBA ให้ปรับ Code มาเองก่อน แล้วนำ Code ที่ปรับแล้วมาและยังติดปัญหามาถามกันครับ
deeperice
Member
Member
Posts: 6
Joined: Mon Nov 27, 2017 2:53 pm

Re: V-LookUp + VBA ดึงรูป

#14

Post by deeperice »

ขออนุญาติครับ
ผมประสบปัญหาคล้ายๆ กับเจ้าของกระทู้นี้ครับ เเต่เปลี่ยนจากการหารูปเป็นไฟล์ PDF ครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30919
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: V-LookUp + VBA ดึงรูป

#15

Post by snasui »

:D กรณีใช้ VBA ให้เขียนมาเองก่อน ติดตรงไหนแล้วค่อยถามกันต่อ อ่านกฎการใช้บอร์ดด้านบน :roll: ข้อ 4 เรื่องการแนบไฟล์ ข้อ 5 เรื่องการโพสต์ Code ให้แสดงเป็น Code เพื่อสะดวกต่อการอ่านและการคัดลอกไปทดสอบด้วยครับ
Post Reply