snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
palmy
Member
Posts: 78 Joined: Fri Nov 12, 2010 3:06 pm
#1
Post
by palmy » Mon Mar 04, 2013 12:31 am
เรียนอาจารย์ครับ
ผมลองนำCode การดึงรูปภาพมาแสดงใน Excel ซึ่งสามารถดึงรูปมาแสดงได้
แต่ทีนี้เวลาเราค้นหารูปภาพถัดไป รูป Icon และ Logo ต่างๆที่เราทำใน Sheet นี้ก็หายไปด้วย
ต้องปรับ Code อย่างไรครับถึงจะให้หายไปเฉพาะรูปที่เราดึงมาแสดง
Code: Select all
Sub ShowPicture00()
Dim r As String
r = Range("B9").Value
On Error Resume Next
ActiveSheet.Shapes(1).Delete
Range("H2").Select
ActiveSheet.Pictures.Insert("D:\PicSSK\" & r & ".BMP").Select
Selection.ShapeRange.ScaleWidth 0.14, _
msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.ScaleHeight 0.14, _
msoFalse, msoScaleFromTopLeft
Range("B9").Select
End Sub
Sub ShowPicture()
Dim r As String
Dim imgIcon
On Error Resume Next
ActiveSheet.Shapes(1).Delete
r = Range("B9").Value
With Range("H2")
Set imgIcon = ActiveSheet.Shapes.AddPicture( _
Filename:="D:\PicSSK\" & r & ".BMP", LinkToFile:=False, _
SaveWithDocument:=True, Left:=.Left, Top:=.Top, _
Width:=120, Height:=130)
End With
Set imgIcon = Nothing
End Sub
joo
Gold
Posts: 1213 Joined: Sat Apr 17, 2010 3:50 pm
#2
Post
by joo » Mon Mar 04, 2013 11:48 am
ลองแนบไฟล์มาดูกันหน่อยครับเพื่อนสมาชิกจะได้ช่วยกันทดสอบ
palmy
Member
Posts: 78 Joined: Fri Nov 12, 2010 3:06 pm
#3
Post
by palmy » Mon Mar 04, 2013 8:30 pm
ไฟล์ตัวอย่างครับ
ใน Sheet Search จะใช้โค๊ดดึงรูปภาพมาแสดงจากรหัสพนักงาน
ซึ่งสามารถเรียกรูปได้ปกติ
แต่ ตัวควบคุมฟอร์ม รูปโลโก้ต่างๆ จะหายไปหมดเลยครับ
(จากตัวอย่างที่แนบ รูปโลโก้หายไปแล้ว และตัวควบคุมฟอร์มที่ใช้บันทึกข้อมูลไปอีก Sheet ก็หายไปด้วยครับ)
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30917 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#4
Post
by snasui » Mon Mar 04, 2013 10:40 pm
ตัวอย่าง การปรับ code เป็นตามด้านล่างเพื่อลบ object อื่น ๆ ที่ไม่ได้ชื่อ
รูปภาพ 5 ออกไป
Code: Select all
Sub ShowPicture()
Dim r As String
Dim p As Object
Dim imgIcon
On Error Resume Next
For Each p In ActiveSheet.Shapes
If p.Name <> "รูปภาพ 5" Then
p.Delete
End If
Next p
' ActiveSheet.Shapes(1).Delete
r = Range("B9").Value
With Range("H2")
Set imgIcon = ActiveSheet.Shapes.AddPicture( _
Filename:="D:\PicSSK\" & r & ".BMP", LinkToFile:=False, _
SaveWithDocument:=True, Left:=.Left, Top:=.Top, _
Width:=120, Height:=130)
End With
Set imgIcon = Nothing
End Sub
palmy
Member
Posts: 78 Joined: Fri Nov 12, 2010 3:06 pm
#5
Post
by palmy » Wed Mar 06, 2013 12:22 am
เรียนถามครับ
จากการใช้งานดึงรูปภาพมาแสดง สิ่งที่เจอปัญหาเพิ่มเติม ซึ่งไม่แน่ใจว่าเป็นเพราะใช้ Code นี้หรือเปล่า
คือการใช้ Data Validation เพื่อจัดทำรายการเลือก (List) ใน Sheet นี้
จะถูกลบหมด เมื่อเช็คไปที่ Validation การตั้งค่าก็ยังเป็นรูปแบบ "รายการ" อยู่เช่นเดิม
แต่ใน Cell นั้น ไม่มีปุ่มลูกศร Dropdown ให้เลือก
ต้องตั้งค่า Validation จากรายการ เป็นค่าใดๆ ก่อน แล้วตั้งใหม่ก็สร้างเป็นรายการได้
แต่ป้อนข้อมูลในการดึงภาพใหม่ List รายการก็หายไปอีก
รบกวนช่วยแนะนำด้วยครับ
tupthai
Bronze
Posts: 302 Joined: Sat Feb 04, 2012 2:49 pm
#6
Post
by tupthai » Wed Mar 06, 2013 8:09 am
เปลี่ยนจาก
Code: Select all
For Each p In ActiveSheet.Shapes
If p.Name <> "รูปภาพ 5" Then
p.Delete
End If
Next p
เป็น
Code: Select all
For Each p In ActiveSheet.DrawingObjects
If p.Name <> "รูปภาพ 5" Then
p.Delete
End If
Next p
ลองทดสอบดูครับ
palmy
Member
Posts: 78 Joined: Fri Nov 12, 2010 3:06 pm
#7
Post
by palmy » Wed Mar 06, 2013 10:04 am
ขอบคุณมากครับ
nurak
Member
Posts: 59 Joined: Thu May 06, 2010 5:27 am
#8
Post
by nurak » Sat Feb 15, 2014 6:43 am
มีวิธีการปรับลดขนาดความละเอียดของรูป ก่อนนำเข้าใน Excel หรือไม่ครับ หรือมีวิธีอื่นๆช่วยแนะนำด้วยครับ
snasui
Site Admin
Posts: 30917 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#9
Post
by snasui » Sat Feb 15, 2014 8:35 am
สามารถใช้ Microsoft Office Picture Manager เข้ามาช่วยได้ครับ
กรณีใช้ Windows 7 คลิก Start > คีย์
m o p m
Windows จะ Search โปรแกรมมาให้
nurak
Member
Posts: 59 Joined: Thu May 06, 2010 5:27 am
#10
Post
by nurak » Sat Feb 15, 2014 8:47 am
ถ้าเป็น XP วิธีการทำแบบไหนครับ
snasui
Site Admin
Posts: 30917 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#11
Post
by snasui » Sat Feb 15, 2014 8:53 am
ลองตามนี้ครับ
Start > All Programs > Microsoft Office > Microsoft Office
xxxx
Tools
สำหรับ xxxx คือ Version ของ Microsoft Office ที่ใช้อยู่ครับ