我希望能够使用 VBA 在 Visio 中将图像作为形状导入。我尝试使用以下方法插入图像,但它不起作用...
myShape.Import(imagePath)
但是,myPage.Import(imagePath)
可以正常工作并将图像放置在页面的中心,但我无法将其作为形状进行操作。我试过在网上搜索,但似乎找不到使用 VBA 的方法。
只是扩展 @tim 和 @mike 评论这里是一个快速的片段,它将导入部分包装到一个函数中
Sub TryAddImage()
Dim vPag As Visio.Page
Set vPag = ActivePage
Dim shpImg As Visio.Shape
Set shpImg = AddImageShape(vPag, "C:\MyImage.jpg")
If Not shpImg Is Nothing Then
'Do something to your new shape
shpImg.CellsU("Width").FormulaU = "=Height*0.5"
End If
End Sub
Private Function AddImageShape(ByRef vPag As Visio.Page, fileName As String) As Visio.Shape
Dim shpNew As Visio.Shape
If Not vPag Is Nothing Then
Dim UndoScopeID1 As Long
UndoScopeID1 = Application.BeginUndoScope("Insert image shape")
On Error Resume Next:
Set shpNew = vPag.Import(fileName)
If Not shpNew Is Nothing Then
Application.EndUndoScope UndoScopeID1, True
Else
Application.EndUndoScope UndoScopeID1, False
End If
End If
Set AddImageShape = shpNew
End Function
基本上,该函数尝试从导入方法返回一个形状。如果该方法由于不存在的路径或未安装适当的图像过滤器而产生错误,则该函数将返回“Nothing”,然后您可以在调用代码中对此进行测试。