如何遍历工作表上的 VBA ActiveX (OLE) 图像控件并通过索引加载图片

问题描述

我在工作表上有一堆 ActiveX 控件。我想知道是否可以遍历所有这些并根据某些条件加载图片。

确实,我可以遍历它们并使用以下方法打印它们的名字:

For each obj in SheetName.OLEObjects
    Debug.Print obj.Name
Next obj

我也可以简单地加载图片 SheetName.Image1.picture = LoadPicture(Path)

我不能做的是通过如下循环加载图片:

For each obj in SheetName.OLEObjects
    SheetName.OLEObjects("Image" & counter).Picture = LoadPicture(Path)
Next obj

使用控件名称加载它们会很乏味:SheetName.Image1.Picture=....,SheetName.Image2.Picture...

希望能得到您的帮助!

解决方法

请尝试下一个方法:

Sub testAddPictureByIteration()
   Dim obj As OLEObject,Path As String
   Path = ThisWorkbook.Path & "\yourPicture.bmp"
   For Each obj In ActiveSheet.OLEObjects
     If TypeOf obj.Object Is MSForms.Image Then 'to avoid buttons,text boxes etc.
        obj.Object.Picture = LoadPicture(Path)
     End If
End Sub

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...