EXCEL TOOLS
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
[code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)Code: Select all
Sub Macro1()
Dim r As Range, ra As Range
Dim imgIcon As Object
Dim obj As Object
On Error Resume Next
With Worksheets("Pic")
Set ra = .Range("A2", .Range("b1500").End(xlUp).Offset(0, 0))
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:="T:\Office\Bow\ItemsPic\" & r.Offset(0, 1).Value & ".jpg", LinkToFile:=False, _
SaveWithDocument:=True, Left:=r.Left + 1, Top:=r.Top, _
Width:=r.Width - 1, Height:=r.Height)
Next r
End Sub
ra
ควรเป็น Set ra = .Range("A2", .Range("b1500").End(xlUp).Offset(0, -1))
ครับCode: Select all
Sub Macro1()
Dim r As Range, ra As Range
Dim imgIcon As Object
Dim obj As Object
On Error Resume Next
With Worksheets("Pic")
Set ra = .Range("A2", .Range("b1500").End(xlUp).Offset(0, 0))
End With
For Each obj In ActiveSheet.Shapes
If Left(obj.Name, 4) = "Pict" Then
obj.Delete
End If
Next obj
ThisWorkbook.Activate 'ลองใส่ตัวนี้ดูครับว่าจะได้ไหม
For Each r In ra
Set imgIcon = ActiveSheet.Shapes.AddPicture( _
Filename:="T:\Office\Bow\ItemsPic\" & r.Offset(0, 1).Value & ".jpg", LinkToFile:=False, _
SaveWithDocument:=True, Left:=r.Left + 1, Top:=r.Top, _
Width:=r.Width - 1, Height:=r.Height)
Next r
End Sub
Code: Select all
Sub Macro1()
Dim r As Range, ra As Range
Dim imgIcon As Object
Dim obj As Object
On Error Resume Next
With Worksheets("Pic")
Set ra = .Range("A2:A" & .Range("b1500").End(xlUp).Row)
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:="T:\Office\Bow\ItemsPic\" & r.Offset(0, 1) & ".jpg", LinkToFile:=False, _
SaveWithDocument:=True, Left:=r.Left + 1, Top:=r.Top, _
Width:=r.Width - 1, Height:=r.Height)
Next r
End Sub
Code: Select all
Range("B1500:F1500")[code] แต่ไม่ได้ครับ
Code: Select all
Sub AddPics()
Dim r As Range, ra As Range
Dim imgIcon As Object
Dim obj As Object
On Error Resume Next
With Worksheets("Pic")
Set ra = .Range("A2:A" & .Range("b1500").End(xlUp).Row)
Set rb = .Range("E2:E" & .Range("f1500").End(xlUp).Row)
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 Union(ra, rb)
Set imgIcon = ActiveSheet.Shapes.AddPicture( _
Filename:="T:\Office\Bow\ItemsPic\" & r.Offset(0, 1) & ".jpg", LinkToFile:=False, _
SaveWithDocument:=True, Left:=r.Left + 1, Top:=r.Top, _
Width:=r.Width - 1, Height:=r.Height)
Next r
End Sub
Code: Select all
Sub AddPics()
Dim r, ra, rb As Range
Dim imgIcon, obj As Object
Dim PicFile As String
On Error Resume Next
With Worksheets("Pic")
Set ra = .Range("A2:A" & .Range("b1500").End(xlUp).Row)
Set rb = .Range("E2:E" & .Range("f1500").End(xlUp).Row)
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 Union(ra, rb)
PicFile = "T:\Office\Bow\ItemsPic\" & r.Offset(0, 1) & ".jpg"
If Dir(PicFile) <> vbNullString Then
Set imgIcon = ActiveSheet.Shapes.AddPicture( _
Filename:=PicFile, LinkToFile:=False, _
SaveWithDocument:=True, Left:=r.Left + 1, Top:=r.Top, _
Width:=r.Width - 1, Height:=r.Height)
End If
Next r
End Sub