如何从arrayList中提取图片对象

时间:2017-09-12 05:09:51

标签: excel vba image excel-vba

我在ArrayList内放置了可变数量的图片。每张图片都有自己的名称(通过命名范围)。

Dim Pic As Picture
Dim picArray As Object
Set picArray = CreateObject("System.Collections.ArrayList")
For Each Pic In ActiveSheet.Pictures
    picName = differentNameEachTime
    If Pic.Left = Range(picName).Left And Pic.Top = Range(picName).Top Then
        picArray.Add Pic
    end if
next Pic

以上Msgbox调用验证上述内容肯定有效:

Range("G3").Select
x = 0
For Each Pic In picArray
    Set picObject = Pic
    MsgBox Pic.Name
    MsgBox TypeName(Pic)
    ActiveCell.Offset(0, x) = Pic '(Doesn't work)
    ActiveCell.Offset(0, x) = picObject '(Doesn't work)
    x = x + 1
Next Pic

但是让活动细胞成为图片并不起作用 - 我不知道如何将每个检索到的图像插入细胞中。

1 个答案:

答案 0 :(得分:1)

您需要将图片的 位置 更改为目标单元格的 位置 。像这样:

Pic.Left = ActiveCell.Offset(0, x).Left
Pic.Top = ActiveCell.Offset(0, x).Top

请注意,在Excel中,您无法将图片实际插入单元格。图片“漂浮”在工作表上方。

然而,您可以将图片“链接”到它浮动的单元格,以便它随着单元格移动和调整大小,因此表现就好像它在里面一样。