: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 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
widtara
Member
Member
Posts: 76
Joined: Tue Jun 29, 2010 11:27 am

เขียนCode VBA เพื่อดึงภาพแล้วแต่ภาพไม่มา

#1

Post by widtara »

สวัสดีค่ะอาจาร์ย หนูมีไฟล์หนึ่ง 133428540.xls ได้เขียนโค้ด VBA แล้วแต่คำสั่งไม่ทำงาน รบกวนอาจารย์ช่วยดูให้หน่อยค่ะ
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: เขียนCode VBA เพื่อดึงภาพแล้วแต่ภาพไม่มา

#2

Post by snasui »

:D ค่อย ๆ ถามตอบกันไปนะครับ

จากไฟล์ที่แนบมา สำหรับ Code นี้เข้าใจว่าอย่างไรครับ :?:

Code: Select all

With Worksheets("Sheet1")
    Set ra = .Range("G4", .Range("D65536").End(xlUp).Offset(0, 1))
 End With
widtara
Member
Member
Posts: 76
Joined: Tue Jun 29, 2010 11:27 am

Re: เขียนCode VBA เพื่อดึงภาพแล้วแต่ภาพไม่มา

#3

Post by widtara »

With Worksheets("Sheet1")
Set ra = .Range("G4", .Range("D65536").End(xlUp).Offset(0, 1))
End With

น่าจะให้คำสั่งทำงานใน "D" ทุกบรรทัด เช่นใส่ข้อมูล D4 ภาพก็ออกที่ G4 แล้วก็เลื่อนลงมาเรื่อยๆหรือเปล่าค่ะ หนูต้องการให้เป็นอย่างนี้นะค่ะ
widtara
Member
Member
Posts: 76
Joined: Tue Jun 29, 2010 11:27 am

Re: เขียนCode VBA เพื่อดึงภาพแล้วแต่ภาพไม่มา

#4

Post by widtara »

widtara wrote:With Worksheets("Sheet1")
Set ra = .Range("G4", .Range("D65536").End(xlUp).Offset(0, 1))
End With

น่าจะให้คำสั่งทำงานใน "D" ทุกบรรทัด เช่นใส่ข้อมูล D4 ภาพก็ออกที่ G4 แล้วก็เลื่อนลงมาเรื่อยๆหรือเปล่าค่ะ หนูต้องการให้เป็นอย่างนี้นะค่ะ

อาจารย์ค่ะ หนูลองนำ code เก่าที่อาจารย์เขียนไว้มาปรับ ได้ ไฟล์ Rev 01. ตอนนี้ภาพโชว์แล้วแต่บรรทัดต่อมาภาพยังไม่มาค่ะช่วยดูให้หน่อยค่ะ

Sub ShowPicture00()
Dim r As String
r = Range("F4").Value
On Error Resume Next

With Worksheets("Sheet1")
Set ra = .Range("G4", .Range("D65536").End(xlUp).Offset(0, 1))
End With


ActiveSheet.Shapes(1).Delete
Range("G4").Select
ActiveSheet.Pictures.Insert("R:\SQA SupplierImprovementPjt\History Parts Quality Project\Pic\" & r & ".JPG").Select
Selection.ShapeRange.ScaleWidth 0.14, _
msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.ScaleHeight 0.14, _
msoFalse, msoScaleFromTopLeft
Range("F4").Select
End Sub
Sub ShowPicture()
Dim r As String
Dim imgIcon
On Error Resume Next

With Worksheets("Sheet1")
Set ra = .Range("G4", .Range("D65536").End(xlUp).Offset(0, 1))
End With

ActiveSheet.Shapes(1).Delete
r = Range("F4").Value
With Range("G4")
Set imgIcon = ActiveSheet.Shapes.AddPicture( _
Filename:="R:\SQA SupplierImprovementPjt\History Parts Quality Project\Pic\" & r & ".jpg", LinkToFile:=False, _
SaveWithDocument:=True, Left:=.Left, Top:=.Top, _
Width:=180, Height:=138)
End With
Set imgIcon = Nothing
End Sub
widtara
Member
Member
Posts: 76
Joined: Tue Jun 29, 2010 11:27 am

Re: เขียนCode VBA เพื่อดึงภาพแล้วแต่ภาพไม่มา

#5

Post by widtara »

ลืมแนบไฟล์มาให้ค่ะ
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: เขียนCode VBA เพื่อดึงภาพแล้วแต่ภาพไม่มา

#6

Post by snasui »

widtara wrote:With Worksheets("Sheet1")
Set ra = .Range("G4", .Range("D65536").End(xlUp).Offset(0, 1))
End With

น่าจะให้คำสั่งทำงานใน "D" ทุกบรรทัด เช่นใส่ข้อมูล D4 ภาพก็ออกที่ G4 แล้วก็เลื่อนลงมาเรื่อยๆหรือเปล่าค่ะ หนูต้องการให้เป็นอย่างนี้นะค่ะ
:lol: ยังเข้าใจไม่ถูกต้องครับ

ความหมายคือให้ตัวแปร ra มีค่าเท่ากับช่วงเซลล์โดยเริ่มที่ G4 จนถึงค่าสุดท้ายที่ไม่เป็นค่าว่างในคอลัมน์ E ลองทำความเข้าใจตามด้านล่างครับ
  • .Range("D65536") คือเริ่มที่ D65536
  • .Range("D65536").End(xlUp) คือเริ่มที่ D65536 แล้วขึ้นไปยังเซลล์แรกที่พบข้อมูล
  • .Range("D65536").End(xlUp).Offset(0, 1) คือเริ่มที่ D65536 แล้วขึ้นไปยังเซลล์แรกที่พบข้อมูลแล้วไปทางขวา 1 คอลัมน์ จึงกลายเป็นคอลัมน์ E
จะเห็นว่าการเขียน Code เช่นนี้ยังไม่ใช่ช่วงเซลล์ที่ต้องการจะกำหนดตัวแปร เนื่องจากควรจะเป็นช่วงเซลล์ที่เริ่มด้วย D2 (ดูจากไฟล์แรกที่แนบมา)

สำหรับ Procedure ที่ชื่อ Sub ShowPicture00() ไม่มีการ Loop จึงเป็นปกติที่แสดงในเซลล์เดียว ถ้าต้องการ Loop ให้ทำความเข้าใจ Procedure ที่ชื่อ ShowPicture ลองปรับ Code โดยทำความเข้าใจตามด้านบน และศึกษาการใช้ Offset ตามความเห็นนี้ viewtopic.php?p=11360#p11360 ติดตรงไหนก็ยกมาถามได้เรื่อย ๆ ครับ
widtara
Member
Member
Posts: 76
Joined: Tue Jun 29, 2010 11:27 am

Re: เขียนCode VBA เพื่อดึงภาพแล้วแต่ภาพไม่มา

#7

Post by widtara »

อาจารย์ค่ะ ทดลองแล้วมันยังไม่ได้อยู่ดีค่ะ หนูไปเอา code vba
จาก
http://www.snasui.com/viewtopic.php?f=3&t=324/

มาปรับดูใหม่ เปลี่ยนแต่ที่อยู่ R:\ ค่ะ

For Each r In ra
Set imgIcon = ActiveSheet.Shapes.AddPicture( _
Filename:="R:\SQA SupplierImprovementPjt\History Parts Quality Project\Pic\" & r.Offset(0, -1).Value & ".jpg", LinkToFile:=False, _
SaveWithDocument:=True, Left:=r.Left, Top:=r.Top, _
Width:=r.Width, Height:=r.Height)
Next r

คำสั่งก็ไม่ทำงานเลย แม้แต่บรรทัดเดียว

อาจารย์ช่วยทำไฟล์ให้โหลดดูหน่อยค่ะ ค่า enable trust center logging ก็ เซตแล้ว หรือว่าต้องใช้ .xlsm ค่ะ

ดูตัวอย่างมาจาก ดึงรูปจาก Drive D.xls
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: เขียนCode VBA เพื่อดึงภาพแล้วแต่ภาพไม่มา

#8

Post by snasui »

:lol: ที่บอกว่าคำสั่งไม่ทำงานเลยคงจะไม่ใช่ครับ

เนื่องจากไปบังคับว่าแม้จะมีการผิดพลาดก็ไม่แสดงการผิดพลาดขึ้นมาด้วยคำสั่ง

Code: Select all

On Error Resume Next
หากต้องการให้แสดงว่าผิดพลาดตรงไหนก็ Mark บรรทัดนี้ให้เป็น Comment แล้วลอง Run Code ดูครับ

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

สำหรับการวาง Code แล้วให้แสดงเป็น Code ดูข้อ 5 จากโพสต์นี้ครับ http://www.snasui.com/viewtopic.php?f=3&t=1354
widtara
Member
Member
Posts: 76
Joined: Tue Jun 29, 2010 11:27 am

Re: เขียนCode VBA เพื่อดึงภาพแล้วแต่ภาพไม่มา

#9

Post by widtara »

ได้แล้วค่ะ
'On Error Resume Next

ใส่ ' ตัวนี้เข้าไปคำสั่งทำงานเลย แต่ยังไม่เข้าใจว่าเมื่อคำสั่งก็ถูก แล้วทำไมระบบมองเป็น error เมื่อมีคำสั่ง
On Error Resume Next ระบบถึงไม่ทำงานค่ะ
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: เขียนCode VBA เพื่อดึงภาพแล้วแต่ภาพไม่มา

#10

Post by snasui »

:lol: อ่านความเห็นที่ผมตอบไปอย่างช้า ๆ ครับ โดยเฉพาะท่อนนี้
snasui wrote: :lol: ที่บอกว่าคำสั่งไม่ทำงานเลยคงจะไม่ใช่ครับ <== หมายถึงว่าทำงานอยู่ครับ

เนื่องจากไปบังคับว่าแม้จะมีการผิดพลาดก็ไม่แสดงการผิดพลาดขึ้นมาด้วยคำสั่ง

Code: Select all

On Error Resume Next
:aru: ก็เลยไม่เห็นว่ามันผิดพลาด เพราะถูกบังคับไม่ให้แสดงค่าผิดพลาดออกมา
ส่วนคำสั่งถูกแ้ล้วและถูกมองเป็น Error นั้น ผมคงต้องเห็นจังหวะนั้นถึงจะวินิจฉัยได้ครับ
Post Reply