: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

VBA ดึงรูปแล้วเกิด error

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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่

Post a reply


This question is a means of preventing automated form submissions by spambots.
Smilies
:D :thup: :cp: :flw: :rz: :sg: :tt: :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :ard: :arl: :aru: :| :mrgreen: :geek: :ugeek:

BBCode is ON
[img] is ON
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: VBA ดึงรูปแล้วเกิด error

Re: VBA ดึงรูปแล้วเกิด error

#16

by snasui » Thu Feb 18, 2016 11:33 pm

mr.zatan wrote:สรุปคือ Width ไม่สามารถปรับเป็น Auto ได้ใช่มัยครับ
:D คำว่า "มัย" ที่ถูกต้องคือ "ไหม" หรือเขียนเป็น "หรือไม่" ครับ ส่วนคำตอบนั้นผมตอบไว้แล้วตามโพสต์ด้านบน

ที่รูปไม่ยืดตามความยาวเซลล์ผมทดสอบแล้วพบว่าเนื่องจากใช้กำหนดความสูงให้เท่าความสูงของเซลล์ หากไม่กำหนดความสูง จะทำให้รูปยืดเท่าความยาวเซลล์

:!: เดิมผมทดสอบ Code นี้จากเครื่องคอมพิวเตอร์อีกเครื่อง พบว่าติด Error ดังที่แจ้งมา แต่สามารถแทรกภาพจาก Web ได้ เมื่อมาลองกับเครื่องปัจจุบันสามารถที่จะแทรกภาพที่มีอยู่ในเครื่องได้ปกติ :shock: ทั้ง ๆ ที่ Code นี้สามารถได้มาด้วยการบันทึก Macro

Re: VBA ดึงรูปแล้วเกิด error

#15

by mr.zatan » Thu Feb 18, 2016 10:50 pm

สรุปคือ Width ไม่สามารถปรับเป็น Auto ได้ใช่มัยครับ

ผมแปลกใจทำมัย Code นี้รูปไม่ยืดด aspect ratio ถูกต้อง รูปไม่ยืด...

Code: Select all

With Cells(Target.Row, "B")
Set myPict = Cells(Target.Row, "B").Parent.Pictures.insert("D:\imagee\" & Target.Value & ".jpg")
    myPict.Top = .Top
    myPict.Width = .Width
    myPict.Height = .Height
    myPict.Left = .Left
    myPict.Placement = xlMoveAndSize
End With

Re: VBA ดึงรูปแล้วเกิด error

#14

by snasui » Thu Feb 18, 2016 9:32 pm

:o ขออภัยครับ .AddPicture จำเป็นต้องกำหนดตำแหน่งและความสูงความกว้าง ไม่สามารถละไว้ได้ครับ

ตัวอย่างการกำหนดแบบอื่น ๆ Top:= 100, Left:= 100, Width:= 70,Heigth:= 70 สามารถเปลี่ยนค่าตัวเลขได้ตามต้องการ

Re: VBA ดึงรูปแล้วเกิด error

#13

by mr.zatan » Thu Feb 18, 2016 6:17 pm

ลบออกแล้ว error ครับ

Code: Select all

Sub STAMP_P4()
   Dim sFile As Variant, r As Range
    Dim imgIcon As Object
    Set r = Range("P4").MergeArea
    sFile = Application.GetOpenFilename(FileFilter:="Pic Files (*.jpg;*.bmp), *.jpg;*.bmp", _
        Title:="Browse to select a picture")
    If sFile = False Then Exit Sub
    
    Set imgIcon = ActiveSheet.Shapes.AddPicture( _
        Filename:=sFile, _
        LinkToFile:=False, _
        SaveWithDocument:=msoCTrue, _
        Left:=r.Left, _
        Top:=r.Top)

End Sub

Re: VBA ดึงรูปแล้วเกิด error

#12

by snasui » Thu Feb 18, 2016 6:09 pm

:D เอา Width:=r.Width, Height:=r.Height ออกหากไม่ต้องการปรับให้ความกว้างและความสูงภาพมีขนาดเท่าความกว้างและความสูงเซลล์ครับ

Re: VBA ดึงรูปแล้วเกิด error

#11

by mr.zatan » Thu Feb 18, 2016 11:02 am

ซึ่งตอนนี้ รูปยืดตามความกว้างของช่องครับ

จาก Code แก้ให้ Width เป็น Auto ได้มัยครับ

Code: Select all

 For Each r In ra
        Set imgIcon = ActiveSheet.Shapes.AddPicture( _
        Filename:="D:\imagee\" & r.Offset(0, -1).Value & ".jpg", LinkToFile:=False, _
        SaveWithDocument:=True, Left:=r.Left, Top:=r.Top, _
        Width:=r.Width, Height:=r.Height)
        
    Next r

Re: VBA ดึงรูปแล้วเกิด error

#10

by snasui » Wed Feb 17, 2016 7:51 pm

:D อันนั้นไม่ใช่ปัญหา Code เดิมเป็นการเรียกใช้ Event

Code ที่ผมให้ไปก็เรียกใช้ Event ได้เช่นเดียวกัน และปกติแล้วไม่ว่า Code ไหน ๆ ก็เรียกใช้ผ่าน Event ได้ทั้งนั้น ขึ้นอยู่กับความต้องการ ลองปรับใช้ดูครับ

Re: VBA ดึงรูปแล้วเกิด error

#9

by mr.zatan » Wed Feb 17, 2016 7:46 pm

snasui wrote::D วิธีการที่ใช้นั้นเป็นการดึงภาพจาก Web มาแสดง กรณีที่ต้องการดึงภาพที่เก็บไว้ในเครื่องมาแสดง ดูตัวอย่างได้ที่นี่่ครับ wordpress/picture-from-folder/
แต่ติดตรงที่ต้องกดปุ่ม รูปถึงจะโชวนี่สิ ครับ
คือผมอยากให้ใส่ชื่อเสร็จ enter รูปขึ้นมาเลยน่ะครับ.

Re: VBA ดึงรูปแล้วเกิด error

#8

by snasui » Wed Feb 17, 2016 7:12 pm

:D วิธีการที่ใช้นั้นเป็นการดึงภาพจาก Web มาแสดง กรณีที่ต้องการดึงภาพที่เก็บไว้ในเครื่องมาแสดง ดูตัวอย่างได้ที่นี่่ครับ wordpress/picture-from-folder/

Re: VBA ดึงรูปแล้วเกิด error

#7

by mr.zatan » Wed Feb 17, 2016 5:45 pm

ไฟล์พร้อมรูปครับ

Image
Attachments
Order2.xlsm
Excel
(56.54 KiB) Downloaded 11 times
imagee.zip
ไฟล์รูป
(67.7 KiB) Downloaded 9 times

Re: VBA ดึงรูปแล้วเกิด error

#6

by logic » Wed Feb 17, 2016 5:30 pm

ที่บอกว่าชื่ออยู่ในคอลัมน์ P ผมไม่เห็นว่ามีนะครับ ลองตรวจสอบไฟล์แนบอีกทีครับ

ผมอ่านแล้วเข้าใจว่าอาจารย์ให้แนบตัวอย่างรูปที่จะให้แสดงในไฟล์ จะได้เอาไปทดสอบได้ :)

Re: VBA ดึงรูปแล้วเกิด error

#5

by mr.zatan » Wed Feb 17, 2016 5:23 pm

ตามไฟล์รูปและไฟล์แนบครับ

Image
Attachments
Order2.xlsm
(55.41 KiB) Downloaded 11 times

Re: VBA ดึงรูปแล้วเกิด error

#4

by snasui » Wed Feb 17, 2016 5:14 pm

:D แนบไฟล์พร้อมรูปที่จะให้แสดงมาด้วยจะได้ช่วยทดสอบได้ครับ

Re: VBA ดึงรูปแล้วเกิด error

#3

by mr.zatan » Wed Feb 17, 2016 5:12 pm

ขอบคุณครับ..

ผมขอเปลี่ยนโจทย์นิดนึงครับ

จาก Code เดิม

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Columns("P")) Is Nothing Then Exit Sub
Dim myPict As Picture

With Cells(Target.Row, "O")
Set myPict = Cells(Target.Row, "O").Parent.Pictures.insert("D:\imagee\" & Target.Value & ".jpg")
    myPict.Top = .Top
    myPict.Width = .Width
    myPict.Height = .Height
    myPict.Left = .Left
    myPict.Placement = xlMoveAndSize
End With

End Sub

ชื่ออยู่ คอลัมน์ P
แสดงรูปที่ คอลัมน์ O

ปัญหาตอนนี้คือ ที่ คอลัมน์ P กดลบหรือแก้ไขชื่อ จะเกิด error ทันที

Re: VBA ดึงรูปแล้วเกิด error

#2

by snasui » Wed Feb 17, 2016 4:57 pm

:D ตามที่อธิบายมา Set myPict ควรเป็นด้านล่างครับ

Set myPict = Cells(31, "B").Parent.Pictures.insert("D:\imagee\" & range("i31") & ".jpg")

VBA ดึงรูปแล้วเกิด error

#1

by mr.zatan » Wed Feb 17, 2016 11:22 am

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


ชื่ออยู่ที่ I31
รูปต้องการให้แสดงที่ B31

ที่ Sheet Print ทดสอบเลือกข้อมูลที่ I4 จะเกิด error ทันที

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Columns("I")) Is Nothing Then Exit Sub
Dim myPict As Picture

With Cells(Target.Row, "B")
Set myPict = Cells(Target.Row, "B").Parent.Pictures.insert("D:\imagee\" & Target.Value & ".jpg")
    myPict.Top = .Top
    myPict.Width = .Width
    myPict.Height = .Height
    myPict.Left = .Left
    myPict.Placement = xlMoveAndSize
End With

End Sub
Attachments
Order.xlsm
Order
(225.42 KiB) Downloaded 14 times

Top