: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 ดึงรูป

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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

Code ดึงรูป

#1

Post by sup »

เรียน อาจารย์ครับ

เรื่องการเขียน Code ดึงรูปที่อาจารย์เคยเผยแพร่ในฟอรั่มนี้ผมลองใช้ดูก็สามารถดึงได้ครับ แต่ยังไม่เข้าใจความหมายของ Code จึงอยากรบกวนช่วยอธิบายให้หน่อยครับเพื่อความกระจ่าง ผมได้แนบไฟล์และคำถามมาครับ ต้องรบกวนหน่อยครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30741
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: Code ดึงรูป

#2

Post by snasui »

:D จาก Code ในไฟล์แนบ ผมแปล Code ไว้ตามด้านล่างแล้วครับ

Code: Select all

Sub ShowPicture() 'ชื่อ Sup Procedure จะเป็นชื่ออะไรก็ได้ ถ้าเขียนให้สื่อความหมายว่าต้องการทำอะไรก็จะยิ่งดี
Dim r As Range, ra As Range 'การประกาศตัวแปรให้ r, ra เป็นช่วงข้อมูล
Dim imgIcon As Object 'การประกาศตัวแปรให้ imgIcon เป็น Object
Dim obj As Object 'การประกาศตัวแปรให้ obj เป็น Object
On Error Resume Next 'Code สำหรับการกำหนดว่าแม้มี Error ก็ยังคงให้ Run Code ต่อไป
With Worksheets("Sheet1") 'กำหนดว่าบรรทัดในช่วง With..End With เป็นการกำหนดค่าใน Sheet1
    Set ra = .Range("G4", .Range("F65536").End(xlUp).Offset(0, 1)) 'กำหนดให้ตัวแปร ra มีค่าเท่ากับช่วง G4:Gn (n คือค่าสุดท้ายที่มีข้อมูล)
 End With
 For Each obj In ActiveSheet.Shapes 'กำหนดการ Loop ค่า Object ทั้งหมดในชีทปัจจุบัน
    If Left(obj.Name, 4) = "Pict" Then 'ถ้า Object นั้นมี 4 อักขระหน้าของชื่อเป็นคำว่า "Pict" แล้ว 
        obj.Delete 'ให้ลบ Object นั้น
    End If 
Next obj 'ไปยัง Object ถัดไป
For Each r In ra 'กำหนดการ Loop แต่ละเซลล์ให้ช่วง ra ที่กำหนดไว้ด้านบน
    Set imgIcon = ActiveSheet.Shapes.AddPicture( _
    Filename:="D:\" & r.Offset(0, -1).Value & ".jpg", LinkToFile:=False, _
    SaveWithDocument:=True, Left:=r.Left, Top:=r.Top, _
    Width:=r.Width, Height:=r.Height) 'ให้นำภาพตามชื่อที่อยู่ในเซลล์ด้านซ้ายของแต่ละเซลล์ ใน Folder D: โดยชื่อของภาพต้องมีนามสกุลเป็น .jpg มาแสดง โดยให้ความสูง ความกว้างพอดีกับเซลล์ (จะกำหนดนามสกุลภาพเป็นอย่างอื่นก็ต้องเปลี่ยน .jpg เป็นค่าอื่น)
Next r 'ไปยังเซลล์ถัดไป
End Sub
หากผมจะแก้ไขจุดแสดงภาพเป็นช่วงของ cell ที่ผสานไว้ เช่นให้แสดงที่ K10:O16 1. ผมต้องเขียนCode .Range("K10:O16"),.Range("K10") ใช่หรือไม่ครับ? 2. แล้วต่อด้วย ("F65536") หรือไม่ครับ? 3. และหากผมต้องการแสดงภาพ 2 ภาพ หรือมากกว่าแต่ไม่เกิน 10 ภาพ จะต้องแก้ไขสูตรอย่างไร ตรงไหนครับ?
ควรแนบไฟล์ตัวอย่างพร้อม Code ที่ลองเขียนเองมาแล้วครับจะได้ทดสอบได้และระบุตำแหน่งได้ตรงกับความต้องการมากกว่า
ผมไม่เห็น Code Macroของ Commnd Box ที่ใช้เป็นปุ่มกดให้แสดงภาพเมื่อใส่รหัสภาพ ไม่ทราบว่าทำอย่างไรครับและหากไม่ต้องการใช้ปุ่มนี้ แต่ให้เมื่อเรา ใส่รหัสภาพใน Cell แล้ว เคอเซอร์เลื่อนออกนอก Cell ที่รับรหัส ก็ให้ภาพแสดงทันที่ได้ไหมครับและหากผมใส่ Cell ที่รับรหัสภาพ โดยการ Link รหัสภาพมาจากที่อื่น เมื่อรหัสถูกLink มาก็ให้ปรากฎภาพเลย หรือใช้ปุ่มกดให้แสดงได้ไหมครับ
การเขียน Code VBA นั้นจะกำหนดให้มีปุ่มให้กดหรือไม่ก็ย่อมทำได้ จากที่ถามมา หากทำด้วย VBA สามารถทำได้ทั้งนั้นครับ การเขียน VBA จำเป็นต้องเขียนมาก่อนเสมอ เขียนมาแล้วติดตรงไหนสามารถถามได้ หากไม่เข้าใจพื้นฐานและเขียนเองไม่ได้เลย ไม่ควรใช้ VBA ครับ ถ้าหากจำเป็นต้องใช้ ควรให้ผู้ที่เขียนได้เขียนมาก่อน แล้วถามมาเฉพาะที่เป็นปัญหาโดยต้องมี Code แนบมาด้วยเสมอ ระบุให้ชัดเจนว่า Procedure ใด Module ใด เพื่อจะได้เข้าถึงข้อมูลโดยไวครับ
sup
Member
Member
Posts: 136
Joined: Mon Sep 13, 2010 11:36 am

Re: Code ดึงรูป

#3

Post by sup »

ขอบพระคุณมากครับอาจารย์ ตอนนี้กำลังศึกษาจากตำราที่หาซื้อมาครับ(หลายเล่มเลย) ต้องค่อยทำความเข้าใจไปเรื่อยๆครับ จะพยายามทำให้ได้ครับ นี่คือความมุ่งมั่นของผมครับ แต่สิ่งสำคัญ คือแรงบันด่ลใจที่ได้รับจากอาจารย์ครับ ขอเก่งสัก 1ใน 100 ขออาจารย์ก็พอครับ และคลต้องรบกวนมาเป็นระยะๆครับ
ขอบคุณมากๆครับ
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: Code ดึงรูป

#4

Post by bank9597 »

:D :D

สู้ๆน่ะครับ อย่าหมดกำลังใจง่ายๆ เหมือนกับผม เรียนมาหลายเดือนแล้วครับ ยังไม่ก้าวหน้าเลย 1 ใน 100 ของอาจารย์ ผมยังได้ไม่ถึง เศษ 1 ส่วน 4 เลยครับ :lol:

สู้ๆครับ เป็นกำลังใจให้อีกคน :mrgreen:
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
Jenny_Jennista
Member
Member
Posts: 1
Joined: Sun Feb 18, 2018 5:17 pm

Re: Code ดึงรูป

#5

Post by Jenny_Jennista »

สวัสดีค่ะ รบกวนสอบถามว่า หากต้องการดึงรูปให้อยู่แนวนอน ชื่อรูปตำแหน่ง C2 ,C3,C4 จากนั้นรูปภาพแสดงใต้ชื่อ ในตำแหน่ง D2,D3,D4 (จากโค้ดที่อาจารย์ให้มาจะวางรูปในแนวตั้ง) และต้องการทำซ้ำใน แถวถัดไป รบกวนอาจารย์ด้วยค่ะ
User avatar
snasui
Site Admin
Site Admin
Posts: 30741
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: Code ดึงรูป

#6

Post by snasui »

:D กำหนดตัวแปร ra ให้มีขอบเขตไปทางขวาเท่ากับที่ต้องการครับ

ตัวอย่าง set ra = .range("g4").resize(1,4) เป็นการขยาย g4 ไปด้านขวา 4 เซลล์ เช่นนี้เป็นต้น

การใช้ VBA จำเป็นต้องปรับปรุง Code มาเองก่อนเสมอ ติดแล้วค่อยถามกันครับ
Post Reply