【问题标题】:How to walk over the parts of a word document?如何遍历word文档的各个部分?
【发布时间】:2016-03-29 22:42:02
【问题描述】:

出于调试目的,出于好奇,我想研究一下 word 文档的结构。作为一个实际的应用程序,我想象一个基于 VBA 的转换器,从 Word 到其他格式。

问题:我如何理解段落中存储的内容?

例如:

在 VBA 的帮助下,我想找到该文档包含:

  • 字母A
  • 按钮 B
  • 字母 C
  • 段落结尾

我试图逐个字符地查看文档:

Private Sub CommandButton1_Click()
    Dim r As Range
    Dim i As Integer
    For i = 0 To ActiveDocument.Range.End - 1
        Set r = ActiveDocument.Range(i, i + 1)
        Debug.Print "The symbol: " & r.Text
    Next
End Sub

结果是:

The symbol: A
The symbol: 
The symbol:  
The symbol: C
The symbol: O
The symbol: N
The symbol: T
The symbol: R
The symbol: O
The symbol: L
The symbol:  
The symbol: F
The symbol: o
The symbol: r
The symbol: m
The symbol: s
The symbol: .
The symbol: C
The symbol: o
The symbol: m
The symbol: m
The symbol: a
The symbol: n
The symbol: d
The symbol: B
The symbol: u
The symbol: t
The symbol: t
The symbol: o
The symbol: n
The symbol: .
The symbol: 1
The symbol:  
The symbol: \
The symbol: s
The symbol:  
The symbol: 
The symbol: 
The symbol: 
The symbol: C
The symbol: 

按钮分布在一个范围内。我找不到可以让我区分按钮和普通文本的范围对象属性。

【问题讨论】:

  • 有很多方法可以进行这种循环。该按钮是一个Field,可以使用Range.Fields 集合来识别。

标签: vba ms-word


【解决方案1】:

获取文档的 WordOpenXML。遍历那将是在事情发生时捡起事情的最佳方式。 Word 的对象模型不是为做你想做的事而构建的。

Document.Content.WordOpenXML

为您提供以 OPC 平面文件格式定义文档的 WordOpenXML - 作为字符串。

或者您可以使用 Open XML SDK 处理已关闭的文档。

Office Open XML 上的 ECMA 文档解释了每个元素代表什么以及它们如何链接在一起。

【讨论】:

    猜你喜欢
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-07
    • 2015-10-05
    • 1970-01-01
    • 2019-11-20
    • 1970-01-01
    相关资源
    最近更新 更多