VBA专题06-1:利用Excel中的数据自动化构建Word文档—了解Word对象模型

2019-10-09 14:48:40 浏览数 (1)

前言:将Excel与Word合理地整合交互,往往能够获得很好的效果,极大地提高办公自动化效率。例如,将数据存放在Excel工作表中,Word文档按需自动化提取其中的特定数据;或者使用Excel来分析数据,然后以Word文档来呈现分析结果,等等。本专题先讲解了Word对象模型中常用的对象,让大家先熟悉VBA是如何操控Word文档的,有了一定的Word VBA基础知识后,再通过详细的示例演示Excel与Word交互的技术。

了解Word对象模型

与Excel一样,我们使用VBA来调用Word对象模型中的对象及其属性、方法和事件,从而实现对Word的控制。Word对象模型似乎有点复杂,涵盖了整个Word应用程序、文档、文档内的段落、段落内的句子、句子中的词语、词语内的字符、表格内的单元格……等等。其中一些常用的对象如下图1所示。

图1:一些常用的Word对象

Application对象

代表Word应用程序本身。

Document对象

代表Word文档,类似于Excel工作簿对象。

Paragraphs对象

代表文档的段落。

Sentences对象

代表句子。

Words对象

代表单词。

Characters对象

代表字符。

Selection对象

代表文档中所选择的内容。

Bookmarks对象

代表文档中的书签。

Range对象

代表文档中一个由起始点和中止点所确定的连续区域。

Sections对象

代表节。

Fonts对象

代表字体。

Templates对象

代表Word文档模板。

下图2展示了Word文档中的一些常用对象。

图2:文档文本对应的常用对象示例

以上图2中所选择的段落为例,使用VBA代码来对其进行分析。

下面的代码分析上图2所选文字区域的段落和句子:

'分析所选文字区域的段落和句子

Dim str As String

Dim rng As Range

Dim i As Long

str = "所选区域的段落数:"& _

Selection.Paragraphs.Count & _

vbCrLf & vbCrLf & _

"所选区域的句子数:" & _

Selection.Sentences.Count & _

vbCrLf & _

"句子分别是:" & vbCrLf

For i = 1 To Selection.Sentences.Count

str = str & "第" & i& "句" & ": "

str = str & Selection.Sentences.Item(i)

str = str & vbCrLf

Next i

MsgBox str

结果如下图3所示。

图3:上图1所选文本中段落和句子的分析结果

可以看出,Word VBA是以“。”或“.”为分隔符来拆分出句子的。

下面的代码分析上图2所选文字区域的词语和字符:

'分析所选文字区域的词语和字符

Dim str As String

Dim rng As Range

Dim i As Long

str = "所选区域的词语数:"& _

Selection.Words.Count & _

vbCrLf & vbCrLf & _

"所选区域的字符数:" & _

Selection.Characters.Count & _

vbCrLf & vbCrLf & _

"其中的词语分别是:" & vbCrLf

i = 0

For Each rng In Selection.Words

str = str & rng.Text

str = str & vbTab

i = i 1

'每行8个词

If (i Mod 8) = 0 Then

str = str & vbCrLf

End If

Next rng

MsgBox str

结果如下图4所示。

图4:上图1所选文本中词和字符的分析结果

可以看出,Word VBA将符号作为一个词。

0 人点赞