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

使用Excel VBA使用循环将图片插入Word,vba,excel,ms-word,Vba,Excel,Ms Word,我试图使用循环来缩短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 L

我试图使用循环来缩短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()
指的是我已经定义的目录地址列表。

你也应该把你的图片放在列表中。请参阅R3uK的
系列
提案

但是,如果您不需要在图片上保留参考资料,您可以使其更简单:

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

您可以使用数组或集合:

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

谢谢J.Chomel,我尝试了你的代码,但是得到了一个类型不匹配的错误。我看了一下本地窗口,它显示Pic的值为空。如果我第一次使用Pic是为了插入图片,我应该如何定义Pic?我目前只将path()定义为保存了目录值的变量。干杯。
Pic()。为了更清晰,我编辑了这篇文章以显示完整的代码。实际上,我使用了
Application.Transpose
来首先定义path()——多亏了另一位stackoverflow用户的帮助。你知道我可以用什么代码来定义Pic()?如果你不使用
Pic1
等,你甚至可能不需要
Pic()
部分。