【发布时间】:2014-07-09 19:38:52
【问题描述】:
here 可用的 HTML 文档似乎破坏了 VBA - 它会使 Word 2003 崩溃,而 Word 2010 的行为似乎很奇怪。
如果您在 Word 中打开 HTML 文档,在 VBA 编辑器中按 ALT+F11,添加一个类并粘贴以下代码:
Sub Test()
Dim obj As Document
Set obj = Application.ActiveDocument
MsgBox (obj.Shapes.Count)
For Each a In obj.Shapes
MsgBox (a) 'THIS NEVER GETS HIT - w00t
Next
End Sub
在第二个消息框上添加断点 - 它不会被命中。
这没有道理。 Word中的错误?损坏的 HTML?
【问题讨论】:
-
我在 Word 2010 中尝试过,但也无法进入循环。我还尝试将内容复制到普通的word文档中,同样的故事。另一件事:obj.shapes.selectall 给出“内存不足”错误。恐怕不能再帮你了。
-
我无法将您的 HTML 加载到我的 Word (2013) 中...无论如何,尝试将您的代码添加到模块,而不是类。接下来尝试以这种方式循环
InlineShapes:For Each a in obj.InlineShapes。 -
我认为html文件与Word不兼容,查看html源代码,关于形状的细节太少(或仅特定于某些程序)。特别是
path="m@4@5l@4@11@9@11@9@5xe"。你能确认这个html文件是在哪里生成的吗? -
Shape集合中的Shapes对象似乎无效。如果你尝试访问单个对象(例如Debug.Print(obj.Shapes(1).Name)),你会得到invalid procedure call or argument,但是当你尝试一个不存在的索引值时,比如obj.Shapes(9).Name,你会得到index into the specified collection is out of bounds。
标签: vba interop ms-word shapes