我正在阅读MS引用中Shape.DrawSpline方法(Visio)的使用情况。当我在Visio中输入作品时,他们给出了一个示例。该示例获取点,并将它们与曲线连接起来,并在Visio应用程序中显示。
我希望VBA代码驻留在MS中,我将让VBA代码打开Visio绘图,并从Method代码中执行Shape.DrawSpline方法。我的问题似乎决定了如何生成表达式形状以使程序运行,并在打开的Visio绘图中绘制示例曲线。
下面是我正在编写的代码,打开Visio绘图的部分正在为我工作:
Dim AppVisio As Visio.Application
Dim ShpObj As Visio.Shape
Dim XYPoints(70) As Double
Set AppVisio = CreateObject("Visio.Application")
Set DocObj = AppVisio.Documents.Open("C:\Test Template.vsd")当我命令MS Access执行上述代码时,Visio绘图"Test Template.vsd“就会打开它。
紧接着上面的代码,我得到了要绘制的点的x,y坐标。它们被分配给XYPoints数组。
在底部,我有以下代码,用于从Method代码执行DrawSpline方法(Visio)。
这是代码:
Set ShpObj = AppVisio.Application.ActivePage.DrawSpline(XYPoints, 0.25, visSplinePeriodic)我在上面的陈述中出现了一个错误。下面是我得到的错误:“运行时错误”-2032465751(86db08a9)对象的“DrawSpline”方法“IVPage”失败
谢谢,
发布于 2018-07-28 07:58:06
我听了@y4cine的建议。然而,我的猜测是,要么您的文档没有正确打开,要么您填充的点数组格式不正确。SDK示例的以下改编对我有用:
Sub TestSplineFromExcel()
Dim vApp As Visio.Application
Set vApp = CreateObject("Visio.Application")
Dim intCounter As Integer
Dim XYPoints(1 To (5 * 2)) As Double
For intCounter = 1 To 5
'Set x components (array elements 1,3,5,7,9) to 1,2,3,4,5
XYPoints((intCounter * 2) - 1) = intCounter
'Set y components (array elements 2,4,6,8,10) to f(i)
XYPoints(intCounter * 2) = (intCounter * intCounter) - (7 * intCounter) + 15
Next intCounter
vApp.Documents.Add ""
Dim vPag As Visio.Page
Set vPag = vApp.ActivePage
If vPag Is Nothing Then
MsgBox "Target page is null"
Else
Dim shp As Visio.Shape
Set shp = vPag.DrawSpline(XYPoints, 0.25, Visio.VisDrawSplineFlags.visSplinePeriodic)
End If
End Subhttps://stackoverflow.com/questions/51568783
复制相似问题