使用循环使用Excel VBA将图片插入Word

时间:2017-01-24 08:54:44

标签: excel vba excel-vba ms-word word-vba

我正在尝试使用循环来缩短我的VBA代码的最后一部分。

我目前的代码是:

Sub InsertPics()

Dim WordApp as Object
Dim WordDoc as Object

Set WordApp = CreateObject("Word.Application")
Set WordDoc = WordApp.Documents.Open("Testing.docx"

WordApp.Visible = True

Dim path() as Variant
Dim i as Long
Dim Pic as Variant

path = Application.Transpose(Sheets("Selection").Range("N10:N24").Value)
For i = LBound(ppath) To UBound(ppath)
    path(i) = Sheets("Output").Range("Directory").Value & "\" & path(i) & ".jpg"
Next i

Set Pic1 = WordDoc.InlineShapes.AddPicture(path(1), False, True).ConvertToShape
Set Pic2 = WordDoc.InlineShapes.AddPicture(path(2), False, True).ConvertToShape
Set Pic3 = WordDoc.InlineShapes.AddPicture(path(3), False, True).ConvertToShape

End Sub

Set Pic()部分持续了很长一段时间,因此我正在寻找一种方法来使用更短的代码来执行相同的子操作。有没有办法循环这部分?

注意:WordDoc是指特定的word文档,path()是指我已经定义的目录地址列表。

2 个答案:

答案 0 :(得分:1)

您也应该将照片放在列表中。请参阅R3uK的collection提案。

但如果你不需要在照片上保留参考,你可以更简单:

For i = 1 To 3
  WordDoc.InlineShapes.AddPicture(path(i), False, True).ConvertToShape
Next

答案 1 :(得分:1)

您可以使用数组或集合:

Sub test_volvader()
    Dim i As Integer
    Dim myCol As Collection
    Set myCol = New Collection

    For i = 1 To 3
        myCol.Add WordDoc.InlineShapes.AddPicture(Path(1), False, True).ConvertToShape, i
    Next i

    For i = 1 To myCol.Count
        YourOperationOnAPicture myCol.Item(i)
    Next i
End Sub