首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从MS Access VBA中使用Shape.DrawSpline方法(Visio)

从MS Access VBA中使用Shape.DrawSpline方法(Visio)
EN

Stack Overflow用户
提问于 2018-07-28 06:40:48
回答 1查看 319关注 0票数 0

我正在阅读MS引用中Shape.DrawSpline方法(Visio)的使用情况。当我在Visio中输入作品时,他们给出了一个示例。该示例获取点,并将它们与曲线连接起来,并在Visio应用程序中显示。

我希望VBA代码驻留在MS中,我将让VBA代码打开Visio绘图,并从Method代码中执行Shape.DrawSpline方法。我的问题似乎决定了如何生成表达式形状以使程序运行,并在打开的Visio绘图中绘制示例曲线。

下面是我正在编写的代码,打开Visio绘图的部分正在为我工作:

代码语言:javascript
复制
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)。

这是代码:

代码语言:javascript
复制
Set ShpObj = AppVisio.Application.ActivePage.DrawSpline(XYPoints, 0.25, visSplinePeriodic)

我在上面的陈述中出现了一个错误。下面是我得到的错误:“运行时错误”-2032465751(86db08a9)对象的“DrawSpline”方法“IVPage”失败

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-28 07:58:06

我听了@y4cine的建议。然而,我的猜测是,要么您的文档没有正确打开,要么您填充的点数组格式不正确。SDK示例的以下改编对我有用:

代码语言:javascript
复制
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 Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51568783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档