首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Documents.Open的宏不返回文档,而是返回字符串。

使用Documents.Open的宏不返回文档,而是返回字符串。
EN

Stack Overflow用户
提问于 2018-05-01 11:20:13
回答 2查看 482关注 0票数 1

我想从Excel宏打开和读取Word文档的段落。下面是让我困惑的示例代码:

代码语言:javascript
复制
Sub example()

    Dim docPath
    docPath = "C:\temp\test.docx"

    Dim wordApp
    Set wordApp = CreateObject("Word.Application")

    Dim doc
    doc = wordApp.Documents.Open(docPath)

    MsgBox (TypeName(doc)) 'This line displays String. According to the documentation it should be a Document.

End Sub

根据文档,Documents.Open方法应该返回您可以操作的文档。但是当我检查类型时,它说它返回了一个字符串。显然,我不能遍历字符串的段落:

https://msdn.microsoft.com/en-us/vba/word-vba/articles/documents-open-method-word

文件是错的吗?我做错了什么吗?更重要的是,如何从Excel宏循环遍历Word文档的段落?

如果这很重要,我将使用Office 365,并且我已经在C:\temp\test.docx创建了一个小Word文档。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-01 11:41:55

尝试:

代码语言:javascript
复制
Set doc = wordApp.Documents.Open(docPath)

您正在获取的String是您创建的对象的一些属性;可能是Object.................insert MsgBox docName来查看它是什么。

票数 1
EN

Stack Overflow用户

发布于 2018-05-01 12:03:56

虽然缺少的基本上是“Set Doc =.”这样的代码肯定会给你带来麻烦。为了防止出现这种情况,一些建议和一段初始代码(实际上,您的代码有一点修改):

从Tools\References中添加Word对象引用并“键入”您的对象。输入它们将使编写带有intellisense支持的代码变得更加容易。永远不要让“物体”这个词挂在那里。当你完成的时候把它处理掉。

示例:

代码语言:javascript
复制
Dim docPath
docPath = "C:\temp\test.docx"

Dim wordApp As Word.Application
Set wordApp = CreateObject("Word.Application")

Dim doc As Word.Document
Set doc = wordApp.Documents.Open(docPath)

For i = 1 To doc.Paragraphs.Count
  Cells(i, 1) = doc.Paragraphs(i).Range.Words.Count
  Cells(i, 2) = doc.Paragraphs(i)
Next


wordApp.Quit

Set doc = Nothing
Set wordApp = Nothing
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50115587

复制
相关文章

相似问题

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