Page 1 of 1

VBA ค้นหารูปจาก 2 แห่ง

Posted: Thu Sep 18, 2014 9:35 am
by notta_nobi
ผมมีเรื่องรบกวนทุกท่านเกี่ยวกับ VBA ครับ
ออกตัวก่อนนะครับว่าผมเองเขียน VBA ไม่เป็นนะครับ
แต่ผมอ่านวิธีค้นหาภาพด้วย VBA ในบอร์ดนี้แล้วลองปรับนิดหน่อยก็สามารถใช้ได้
ปัจจุบันผมใช้ Code นี้อยู่ครับ

Code: Select all

Sub ShowPicture1()
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("G4", .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:="\\AA-AA-sv\PIC\EMP_Picture\Current\" & 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
หากว่าผมต้องการเพิ่มเงื่อนไขว่าหากค้นภาพที่ "\\AA-AA-SV\PIC\EMP_Picture\Current\" ไม่เจอให้ค้นหาที่ "\\BB-BB-SV\PIC\EMP_Picture\Current\" เพิ่มเติม ควรจะเขียน VBA เพิ่มตรงไหน อย่างไรครับ

รบกวนทุกท่านด้วยครับ

Re: VBA ค้นหารูปจาก 2 แห่ง

Posted: Thu Sep 18, 2014 5:25 pm
by snasui
:D การใช้ Code VBA จำเป็นต้องปรับเองได้บ้าง กรณียกมาเฉย ๆ ผมไม่ถือว่าได้ลองปรับมาแล้ว

ลองปรับ Code ตามด้านบน :roll: มาเองก่อน ติดตรงไหนแล้วค่อยมาถามกันต่อครับ

Re: VBA ค้นหารูปจาก 2 แห่ง

Posted: Fri Sep 19, 2014 1:50 pm
by notta_nobi
:D อาจารย์ครับ
เดิมทีผมได้แนวคิดมาจาก wordpress/?p=417 ครับ
Code เดิมที่เขียนไว้

Code: Select all

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("G4", .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:\" & 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
ผมปรับเฉพาะในส่วนของแหล่งที่เก็บรูปภาพครับ จาก Filename:="D:\" & r.Offset(0, -1).Value & ".jpg", LinkToFile:=False, _
เป็น Filename:="\\AA-AA-sv\PIC\EMP_Picture\Current\" & r.Offset(0, -1).Value & ".jpg", LinkToFile:=False, _
เพื่อให้สามารถเชื่อมโยงไปยัง Server ที่จัดเก็บรูปครับ

แต่เงื่อนไขที่ผมต้องการเพิ่มคือ
หากค้นภาพที่ "\\AA-AA-SV\PIC\EMP_Picture\Current\" ไม่เจอ
ให้ค้นหาที่ "\\BB-BB-SV\PIC\EMP_Picture\Current\" เพิ่มเติม


ควรจะเขียน VBA เพิ่มตรงไหน อย่างไรครับ

ขอบคุณครับ

Re: VBA ค้นหารูปจาก 2 แห่ง

Posted: Fri Sep 19, 2014 6:06 pm
by snasui
:D ตัวอย่าง Code ครับ

Code: Select all

'Other code
For Each r In ra
    If Dir("\\AA-AA-sv\PIC\EMP_Picture\Current\" & r.Offset(0, -1).Value & ".jpg") <> "" Then
        Set imgIcon = ActiveSheet.Shapes.AddPicture( _
        Filename:="\\AA-AA-sv\PIC\EMP_Picture\Current\" & r.Offset(0, -1).Value & ".jpg", LinkToFile:=False, _
        SaveWithDocument:=True, Left:=r.Left, Top:=r.Top, _
        Width:=r.Width, Height:=r.Height)
    Else
        Set imgIcon = ActiveSheet.Shapes.AddPicture( _
        Filename:="\\BB-BB-SV\PIC\EMP_Picture\Current\" & r.Offset(0, -1).Value & ".jpg", LinkToFile:=False, _
        SaveWithDocument:=True, Left:=r.Left, Top:=r.Top, _
        Width:=r.Width, Height:=r.Height)
    End If
Next r
'Other code

Re: VBA ค้นหารูปจาก 2 แห่ง

Posted: Mon Sep 22, 2014 1:26 pm
by notta_nobi
:D ขอบคุณมากครับ
ผมปรับ Code ใหม่ตามที่อาจาร์ยแนะนำมาสามารถใช้งานได้ดีครับ
Code ใหม่ที่ผมปรับเป็นตามนี้ครับ (เผื่อท่านอื่นที่อยากนำไปประยุกต์ใช้ครับ)

Code: Select all

Sub ShowPicture1()
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("G4", .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
    If Dir("\\AA-AA-sv\PIC\EMP_Picture\Current\" & r.Offset(0, -1).Value & ".jpg") <> "" Then
        Set imgIcon = ActiveSheet.Shapes.AddPicture( _
        Filename:="\\AA-AA-sv\PIC\EMP_Picture\Current\" & r.Offset(0, -1).Value & ".jpg", LinkToFile:=False, _
        SaveWithDocument:=True, Left:=r.Left, Top:=r.Top, _
        Width:=r.Width, Height:=r.Height)
    Else
        Set imgIcon = ActiveSheet.Shapes.AddPicture( _
        Filename:="\\BB-BB-SV\PIC\EMP_Picture\Current\" & r.Offset(0, -1).Value & ".jpg", LinkToFile:=False, _
        SaveWithDocument:=True, Left:=r.Left, Top:=r.Top, _
        Width:=r.Width, Height:=r.Height)
    End If
Next r
End Sub