在VBA中使用通配符名称来设置图片

我正试图从一个工作簿导入到另一个图片并编辑它。 我无法find正确的方法来命名它,或者在将它粘贴到新的工作簿中后进行定义。 WB1中只有一张图片,所以我想循环去find一张图片。

它将被命名为像图片1,图片2,图片10等,所以我认为我应该能够通过像“图片*”这样的东西来定义mapSHP,但我不能得到这个工作。

很明显,我已经定义了WB1,WB2和pasteWS,并将mapSHP定义为一个形状。

For Each s In WB1.Worksheets If s.Pictures.Count > 0 Then For Each pic In s.Shapes pic.Copy WB2.Activate pasteWS.Range("A1").Select pasteWS.Pictures.Paste Set mapSHP = pic GoTo gotPic: Next pic End If Next s gotPic: 

感谢您的帮助。

如果我正确地读你的问题,问题是没有办法从Shapes集合(AFAIK)中的表单对象的图表告诉图片。

但是,由于您声明图片将始终有一个名称,如Picture 1 ... Picture 2 ... Picture 10您可以使用Shape.Name属性来查找图片中的1张图片。

然后,当您复制它时,可以使用相同的名称将对象设置为mapSHPvariables,因为粘贴时名称应该相同。

请参阅下面的代码。 我重构了一点,使其更有效率:

 For Each s In WB1.Worksheets If s.Shapes.Count > 0 Then For Each pic In s.Shapes If Left(pic.Name, 3) = "Pic" Then Dim sName As String sName = pic.Name pic.Copy Exit For 'since we found the picture, exit End If Next pic WB2.Sheets(pasteW2.Name).Range("A1").Paste Set mapSHP = WB2.Sheets(pasteW2.Name).Shapes(sName) GoTo gotPic: End If Next s gotPic: