通过 Visual Basic 调整 Visio 形状的大小



所以我一直在努力尝试在Visual Basic中为一个正在进行的项目调整Visio框的大小,使用一些提供给我的代码,因为我对Visual Basic非常陌生。 我已经尝试了许多方法,但没有任何结果,我现在正在使用 Shape.Resize(( 方法,该方法有效但随后抛出错误:

If ActiveCell.Offset(0, 2).Value = "D" Then
Dim sizer As Double
sizer# = 2
iData = iData + 1
Set shp = CreateVisioObject(AppVisio, "Box", 2.5, 7.25, ActiveCell.Offset(0, 1).Value, """AccentColor4""")
Set shp = shp.Resize(0, sizer, 65)
Set shp = shp.Resize(2, sizer, 65)
End If

在第 6 行,我收到错误"运行时错误'13':类型不匹配",但代码在引发此错误之前仍然执行(即;形状的宽度更改,但代码停止在这一行。以下是 CreateVisioObject 的代码:

Function CreateVisioObject(ByRef oVisio As Object, strType As String, posX As Double, posY As Double, strText As String, strColor As String) As Object
Set shp = oVisio.ActiveWindow.Page.Drop(oVisio.Documents.Item("BLOCK_U.VSS").Masters.ItemU(strType), posX, posY)
shp.CellsSRC(visSectionCharacter, 0, visCharacterSize).FormulaU = "20 pt"

Set oCharacters = shp.Characters
oCharacters.Begin = 0
oCharacters.End = Len(oCharacters)
sChar = strText
oCharacters.Text = sChar

shp.CellsSRC(visSectionObject, visRowFill, visFillForegnd).FormulaU = "THEMEGUARD(THEMEVAL(" + strColor + "))"
shp.CellsSRC(visSectionObject, visRowFill, visFillBkgnd).FormulaU = "THEMEGUARD(SHADE(FillForegnd,LUMDIFF(THEMEVAL(""FillColor""),THEMEVAL(""FillColor2""))))"
shp.CellsSRC(visSectionObject, visRowGradientProperties, visFillGradientEnabled).FormulaU = "FALSE"

Set CreateVisioObject = shp
End Function

以下是 Shape.Resize(( - https://msdn.microsoft.com/en-us/vba/visio-vba/articles/shape-resize-method-visio 的参考

此外,该代码使用 Excel 工作表生成 Visio 文档。

感谢您的帮助!

我以前不知道Shape.Resize Method。当我想调整一些形状的大小时,我只需更改它宽度高度

shp.Cells("width") = 2
shp.Cells("height") = 2

最新更新