VBA的例程有错!请高手帮忙!

little_duck 2009-09-23 12:03:53
在VBA的帮助中看到的代码,在word中运行会报错,但在excel中就能正常运行!请高手看看,怎么回事?
Sub t()

Dim myVertices
myVertices = ActiveDocument.Shapes("sanjiaoxing").Vertices

End Sub

上面的是word中的代码,会报类型错误。

Sub t()

Dim myVertices
myVertices = sheet1.Shapes("sanjiaoxing").Vertices

End Sub

这个是在excel中的代码,能得到正确的结果!
说明一下:那个shape对象是事先建立好的,先用代码已经把名字改为了“shangjiaoxing”
...全文
78 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinaboyzyq 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 little_duck 的回复:]
在VBA的帮助中看到的代码,在word中运行会报错,但在excel中就能正常运行!请高手看看,怎么回事?
Sub t()
   
    Dim myVertices
    myVertices = ActiveDocument.Shapes("sanjiaoxing").Vertices

End Sub

上面的是word中的代码,会报类型错误。

[/Quote]
在word里你要如下这样做才可以:
Sub a()

Dim myDocument As Object
Dim myVertices
'红字关键,也就是说在word中你不能直接用ActiveDocument来获得Vertices
Set myDocument = ActiveDocument

myDocument.Shapes(1).Name = "sanjiaoxing"
myVertices = myDocument.Shapes("sanjiaoxing").Vertices

End Sub


little_duck 2009-09-24
  • 打赏
  • 举报
回复
TO 猴哥 ,刚才没仔细看您的代码,这个问题困扰了我很长时间,刚才在我的电脑上测试了您的代码,正常了!对您表示十二万分的感谢!
little_duck 2009-09-24
  • 打赏
  • 举报
回复
猴哥:我原来的代码就是这样的,为了简化问题才写成问题贴这样的,只看关键代码,希望高手在自己机器上调试后再下结论吧!谢谢!
无·法 2009-09-23
  • 打赏
  • 举报
回复
你确定activedocument就是要操作的?
在myVertices = ActiveDocument.Shapes("sanjiaoxing").Vertices 这一行设个短点,然后监视变量ActiveDocument,看看它下面的成员是否正常,主要是看shapes集合中是否存在“sanjiaoxing”
bru4pang 2009-09-23
  • 打赏
  • 举报
回复
建议传个附件上来,
little_duck 2009-09-23
  • 打赏
  • 举报
回复
只在一个打开的文档中调试,不会有名称错误,用变量监视器可以看到叫“sanjiaoxing”的对象中的.Vertices数据,没有问题,但程序一执行到这一行就报数据类型错误。
xuejiecn 2009-09-23
  • 打赏
  • 举报
回复
将ActiveDocument换成变量 ,用名称指代好些,如果你打开另一个word方档,这个就是你要打开的那个文档了。
这应该是word宏中的代码,要稍加修改再用。

2,462

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧