: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

รบกวนช่วยดูข้อมูลในการดึงภาพ โดยการเขียน VB ครับ

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
dal252244
Member
Member
Posts: 17
Joined: Fri Sep 21, 2012 8:57 am

รบกวนช่วยดูข้อมูลในการดึงภาพ โดยการเขียน VB ครับ

#1

Post by dal252244 »

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

Re: รบกวนช่วยดูข้อมูลในการดึงภาพ โดยการเขียน VB ครับ

#2

Post by snasui »

:D ทดลองตาม Link ไหนครับ

Code ควรแนบมาในไฟล์และไฟล์ควรจะมีนามสกุลเป็น .xlsm เพื่อที่จะแนบ Code ได้ครับ ในการใช้งาน VBA ให้อ่านตามกฎข้อ 5 ด้านบนประกอบครับ :roll:
dal252244
Member
Member
Posts: 17
Joined: Fri Sep 21, 2012 8:57 am

Re: รบกวนช่วยดูข้อมูลในการดึงภาพ โดยการเขียน VB ครับ

#3

Post by dal252244 »

ฺVB ที่ผมเขียนตามนี้ครับ แต่มันจะดึงได้แ่ค่รูปเดียวครับ และมันไม่อัตโนมัติครับ ผมต้องสร้างปุ่มให้กดอีกครั้งเพื่อให้รูปขึ้น แต่อยากให้มันขึ้นรูปอัตโนมัติครับ ขอบคุณอาจารย์ด้วยนะครับ ที่ตอบกระทู้
dal252244
Member
Member
Posts: 17
Joined: Fri Sep 21, 2012 8:57 am

Re: รบกวนช่วยดูข้อมูลในการดึงภาพ โดยการเขียน VB ครับ

#4

Post by dal252244 »

Sub ShowPicture()
Dim r As Range, ra As Range
Dim imgIcon As Object
Dim obj As Object
On Error Resume Next
With Worksheets("Sheet1")
Set ra = .Range("A3", .Range("F65536").End(xlUp).Offset(0, 1))
End With
For Each obj In ActiveSheet.Shapes
If Left(obj.Name, 4) = "Pict" Then
obj.Delete
End If
Next obj
For Each r In ra
Set imgIcon = ActiveSheet.Shapes.AddPicture( _
Filename:="D:\pic\map\" & r.Offset(0, -1).Value & ".jpg", LinkToFile:=False, _
SaveWithDocument:=True, Left:=r.Left, Top:=r.Top, _
Width:=500, Height:=500)
Next r
End Sub
User avatar
snasui
Site Admin
Site Admin
Posts: 31255
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รบกวนช่วยดูข้อมูลในการดึงภาพ โดยการเขียน VB ครับ

#5

Post by snasui »

:D อ่านซ้ำอีกครั้งหนึ่งครับ :ard:
snasui wrote:Code ควรแนบมาในไฟล์และไฟล์ควรจะมีนามสกุลเป็น .xlsm เพื่อที่จะแนบ Code ได้ครับ
สำหรับการปรับ Code ให้เป็น Code ในกล่องความเห็นนี้ดูที่นี่ครับ viewtopic.php?f=3&t=1187

และสำหรับการแสดงหลายภาพตาม Code ที่ Copy มานั้น เป็นการแสดงภาพโดยระบุชื่อภาพไว้ในเซลล์ จากนั้นใช้ Code เข้าไปอ่านว่าชื่อภาพในเซลล์คือชื่อใดเพื่อจะนำภาพนั้นมาแสดง โดยเขียน Path ของตำแหน่งภาพในไว้ใน Code ครับ ลองดูต้นแหล่งที่ไป Copy Code มาครับว่าลักษณะการวางข้อมูลตัวอย่างที่ผมเขียนไว้เป็นแบบใด ก่อนที่จะประยุกต์ไปเป็นแบบอื่น ให้ทำตามตัวอย่างให้ได้ก่อนครับ
dal252244
Member
Member
Posts: 17
Joined: Fri Sep 21, 2012 8:57 am

Re: รบกวนช่วยดูข้อมูลในการดึงภาพ โดยการเขียน VB ครับ

#6

Post by dal252244 »

ผมลองทำ vba ตามนี้แล้วคับ พอกด run มันขึ้น error ตามภาพคับ

Code: Select all

Public Sub san()
Dim r As Range, obj As Object
Dim fs As Object, i As Integer
Dim Img1 As Variant, Img2 As Variant

Set r = Worksheets("302").Range("F1")
Set fs = Application.FileSearch

On Error Resume Next

For Each obj In ActiveSheet.Shapes
    If Left(obj.Name, 3) = "Pic" Then
            obj.Delete
    End If
Next

    With fs
        .LookIn = "D:\pic\" & r '
        .SearchSubFolders = True
        .Filename = "*"
        If .Execute() > 0 Then
            With Range("A3")
                Set Img1 = ActiveSheet.Shapes.AddPicture( _
                Filename:="D:\pic\111" & r.Offset(0, -1).Value & ".jpg", LinkToFile:=False, _
                SaveWithDocument:=True, Left:=.Left, Top:=.Top, _
                Width:=250, Height:=250)
            End With
            With Range("F3")
                Set Img2 = ActiveSheet.Shapes.AddPicture( _
                Filename:="D:\pic\map" & r.Offset(0, -1).Value & ".jpg", LinkToFile:=False, _
                SaveWithDocument:=True, Left:=.Left, Top:=.Top, _
                Width:=250, Height:=250)
            End With
        Else
            MsgBox "There were no files found."
            Exit Sub
        End If
    End With
    
End Sub
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31255
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รบกวนช่วยดูข้อมูลในการดึงภาพ โดยการเขียน VB ครับ

#7

Post by snasui »

:D แนบไฟล์ที่ลองทำเองมาด้วยครับ จะได้เห็นว่าวางข้อมูลตรงไหน ตรงกับตำแหน่งที่ Code ไปเรียกใช้หรือไม่ ฯลฯ
dal252244
Member
Member
Posts: 17
Joined: Fri Sep 21, 2012 8:57 am

Re: รบกวนช่วยดูข้อมูลในการดึงภาพ โดยการเขียน VB ครับ

#8

Post by dal252244 »

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

Re: รบกวนช่วยดูข้อมูลในการดึงภาพ โดยการเขียน VB ครับ

#9

Post by snasui »

:D Code ที่เขียนกับไฟล์ที่แนบมาอ้างชื่อชีทไม่ตรงกัน Code ในไฟล์แนบกับที่โพสต์มาตามด้านบนไม่ตรงกันครับ

ให้ทำตามตัวอย่างใน Link นี้ให้ได้ผลลัพธ์ก่อน ซึ่งผมได้บอกไปรอบนึงแล้วครับ http://snasui.blogspot.com/2011/05/folder-excel.html
snasui wrote: ลองดูต้นแหล่งที่ไป Copy Code มาครับว่าลักษณะการวางข้อมูลตัวอย่างที่ผมเขียนไว้เป็นแบบใด ก่อนที่จะประยุกต์ไปเป็นแบบอื่น ให้ทำตามตัวอย่างให้ได้ก่อนครับ
dal252244
Member
Member
Posts: 17
Joined: Fri Sep 21, 2012 8:57 am

เขียน VB ให้ดึงรูปได้แล้ว แต่อยากจะเขียนCode เพิ่มครับ

#10

Post by dal252244 »

ผมลองเขียน VB ใหม่แล้วคับสามารถดึงรูปมาได้แล้ว แต่อยากจะให้มีรูปเพิ่มใน sheet เดียวกัน ซึ่งมีชื่อรูปเหมือนกันแต่อยู่คนละโฟลเดอร์ ต้องเขียน Code เพิ่มยังไงครับ
ซึ่งผมได้แนบไฟล์มาให้แล้วนะครับ ข้อมูลตามในไฟล์ Book1 เลยครับ
You do not have the required permissions to view the files attached to this post.
dal252244
Member
Member
Posts: 17
Joined: Fri Sep 21, 2012 8:57 am

Re: เขียน VB ให้ดึงรูปได้แล้ว แต่อยากจะเขียนCode เพิ่มครับ

#11

Post by dal252244 »

Code: Select all

Public Sub picshow()
Dim r As Range, ra As Range
    Dim imgIcon As Object
    Dim obj As Object
    On Error Resume Next
    With Worksheets("Sheet1")
        Set ra = .Range("d2", .Range("c2").End(xlUp).Offset(0, 1))
    End With
    For Each obj In ActiveSheet.Shapes
        If Left(obj.Name, 4) = "Pict" Then
            obj.Delete
        End If
    Next obj
    For Each r In ra
        Set imgIcon = ActiveSheet.Shapes.AddPicture( _
        Filename:="D:\pic\map\" & r.Offset(0, -1).Value & ".jpg", LinkToFile:=False, _
        SaveWithDocument:=True, Left:=r.Left, Top:=r.Top, _
        Width:=r.Width, Height:=r.Height)
    Next r
End Sub
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: เขียน VB ให้ดึงรูปได้แล้ว แต่อยากจะเขียนCode เพิ่มครับ

#12

Post by bank9597 »

:D
ไม่ถนัดเรื่องนี้เลยครับ ต้องรอท่านอื่นมาช่วยดูอรกทีน่ะครับ
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
User avatar
snasui
Site Admin
Site Admin
Posts: 31255
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: เขียน VB ให้ดึงรูปได้แล้ว แต่อยากจะเขียนCode เพิ่มครับ

#13

Post by snasui »

:D ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Public Sub picshow()
Dim r As Range, ra As Range
    Dim imgIcon As Object
    Dim obj As Object
    On Error Resume Next
'    With Worksheets("Sheet1")
'        Set ra = .Range("d2", .Range("c2").End(xlUp).Offset(0, 1))
'    End With
    For Each obj In ActiveSheet.Shapes
        If Left(obj.Name, 4) = "Pict" Then
            obj.Delete
        End If
    Next obj
'    For Each r In ra
        Set imgIcon = ActiveSheet.Shapes.AddPicture( _
        Filename:="D:\pic\map\" & Range("C2").Value & ".jpg", LinkToFile:=False, _
        SaveWithDocument:=True, Left:=Range("D2").Left, Top:=Range("D2").Top, _
        Width:=Range("D2").Width, Height:=Range("D2").Height)
        Set imgIcon = ActiveSheet.Shapes.AddPicture( _
        Filename:="D:\pic\111\" & Range("C2").Value & ".jpg", LinkToFile:=False, _
        SaveWithDocument:=True, Left:=Range("H2").Left, Top:=Range("H2").Top, _
        Width:=Range("H2").Width, Height:=Range("H2").Height)
'    Next r
End Sub
dal252244
Member
Member
Posts: 17
Joined: Fri Sep 21, 2012 8:57 am

Re: รบกวนช่วยดูข้อมูลในการดึงภาพ โดยการเขียน VB ครับ

#14

Post by dal252244 »

ทำได้แล้วครับ ขอบคุณมากครับ
dal252244
Member
Member
Posts: 17
Joined: Fri Sep 21, 2012 8:57 am

Re: รบกวนช่วยดูข้อมูลในการดึงภาพ โดยการเขียน VB ครับ

#15

Post by dal252244 »

ถ้าต้องการดึงรูปภาพมาโดยไม่ต้องกดปุ่ม Show จะได้ต้องเขียน สูตรอย่างไรครับ

Code: Select all

Public Sub picshow()
Dim r As Range, ra As Range
    Dim imgIcon As Object
    Dim obj As Object
    On Error Resume Next
'    With Worksheets("302")
'        Set ra = .Range("c116", .Range("b116").End(xlUp).Offset(0, 1))
'    End With
    For Each obj In ActiveSheet.Shapes
        If Left(obj.Name, 4) = "Pict" Then
            obj.Delete
        End If
    Next obj
'    For Each r In ra
        Set imgIcon = ActiveSheet.Shapes.AddPicture( _
        Filename:="D:\302\map\" & Range("b116").Value & ".jpg", LinkToFile:=False, _
        SaveWithDocument:=True, Left:=Range("c116").Left, Top:=Range("c116").Top, _
        Width:=250, Height:=250)
        Set imgIcon = ActiveSheet.Shapes.AddPicture( _
        Filename:="D:\302\pic1\" & Range("b116").Value & ".jpg", LinkToFile:=False, _
        SaveWithDocument:=True, Left:=Range("n116").Left, Top:=Range("n116").Top, _
        Width:=250, Height:=250)
'    Next r
End Sub
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31255
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รบกวนช่วยดูข้อมูลในการดึงภาพ โดยการเขียน VB ครับ

#16

Post by snasui »

:D ไม่กดปุ่ม Show แล้วต้องการให้แสดงรูปเมื่อมีเหตุการณ์ใดเกิดขึ้นครับ :?:
dal252244
Member
Member
Posts: 17
Joined: Fri Sep 21, 2012 8:57 am

Re: รบกวนช่วยดูข้อมูลในการดึงภาพ โดยการเขียน VB ครับ

#17

Post by dal252244 »

เมื่อใส่ ID ในช่องเซล T3 แล้วกด Enter ครับ (ขอโทษด้วยนะครับทีี่ให้รายละเอียดไม่ครบ)
User avatar
snasui
Site Admin
Site Admin
Posts: 31255
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รบกวนช่วยดูข้อมูลในการดึงภาพ โดยการเขียน VB ครับ

#18

Post by snasui »

:D ลองวาง Code ด้านล่างนี้ใน VBE ที่ชีท 302 ครับ

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$T$3" Then
        Call picshow
    End If
End Sub
Post Reply