深入理解Word对象模型及关键对象操作
立即解锁
发布时间: 2025-08-21 01:32:33 阅读量: 2 订阅数: 13 


精通VBA:Office 2016自动化编程指南
### 深入理解Word对象模型及关键对象操作
在使用Word进行自动化操作时,掌握其对象模型和关键对象的使用方法至关重要。下面将详细介绍文档的关闭、模板更改、打印,以及`ActiveDocument`对象和`Selection`对象的使用。
#### 1. 关闭文档
要关闭文档,可以使用应用程序`Document`对象的`Close`方法,其语法如下:
```vba
expression.Close(SaveChanges, OriginalFormat, RouteDocument)
```
- `expression`:必需的表达式,返回一个`Document`对象或`Documents`集合。通常使用`ActiveDocument`对象,若要关闭所有文档,则使用`Documents`集合对象。
- `SaveChanges`:可选的`Variant`参数,用于指定如何处理未保存的更改。可以使用以下常量:
- `wdDoNotSaveChanges`:丢弃更改。
- `wdPromptToSaveChanges`:让Word提示用户保存更改。
- `wdSaveChanges`:保存更改而不提示。
- `OriginalFormat`:可选的`Variant`参数,用于指定文档的保存格式。可以使用以下常量:
- `wdOriginalDocumentFormat`:让Word使用原始文档格式。
- `wdPromptUser`:让Word提示用户选择格式。
- `wdWordDocument`:使用Word文档格式。
- `RouteDocument`:可选的`Variant`参数,设置为`True`可路由附有传送名单的文档。
以下是关闭文档的示例代码:
```vba
' 关闭活动文档而不保存更改
ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
' 关闭所有打开的文档并自动保存更改
Documents.Close SaveChanges:=wdSaveChanges
```
#### 2. 更改文档模板
要更改附加到文档的模板,可将想要影响的`Document`对象的`AttachedTemplate`属性设置为相应模板的路径和名称。例如:
```vba
' 将名为SalesMarket02.dotm的模板附加到活动文档
ActiveDocument.AttachedTemplate = "SalesMarket02.dotm"
```
在这个例子中,假设模板存储在Word模板文件夹之一中,因此无需指定路径。
#### 3. 打印文档
要打印文档,可使用相应`Document`对象的`PrintOut`方法,其语法如下:
```vba
expression.PrintOut(Background, Append, Range, OutputFileName, From, To, Item, Copies, Pages, PageType, PrintToFile, Collate, ActivePrinterMacGX, ManualDuplexPrint, PrintZoomColumn, PrintZoomRow, PrintZoomPaperWidth, PrintZoomPaperHeight)
```
`PrintOut`方法的各参数说明如下:
| 参数 | 说明 |
| ---- | ---- |
| `expression` | 必需的表达式,指定一个`Application`、`Document`或`Window`对象。通常打印`Document`对象,如`ActiveDocument`。 |
| `Background` | 可选的`Variant`参数,设置为`True`可让Word在后台打印文档,允许程序继续运行。 |
| `Append` | 可选的`Variant`参数,设置为`True`可将正在打印的文档追加到指定的打印文件中。 |
| `Range` | 可选的`Variant`参数,指定要打印的页面选择或范围,可使用以下常量:<br> - `wdPrintAllDocument` (0,默认值)<br> - `wdPrintCurrentPage` (2)<br> - `wdPrintFromTo` (3;使用`From`和`To`参数指定页面)<br> - `wdPrintRangeOfPages` (4)<br> - `wdPrintSelection` (1) |
| `OutputFileName` | 可选的`Variant`参数,用于指定打印到文件时的输出文件名。 |
| `From` | 可选的`Variant`参数,用于指定打印页面范围时的起始页码。 |
| `To` | 可选的`Variant`参数,用于指定打印页面范围时的结束页码。 |
| `Item` | 可选的`Variant`参数,用于指定要打印的项目,可使用以下常量:<br> - `wdPrintAutoTextEntries` (4)<br> - `wdPrintComments` (2)<br> - `wdPrintDocumentContent` (0,默认值)<br> - `wdPrintKeyAssignments` (5,文档或其模板的快捷键分配)<br> - `wdPrintProperties` (1)<br> - `wdPrintStyles` (3) |
| `Copies` | 可选的`Variant`参数,用于指定打印的份数。(如果省略`Copies`,Word打印一份。) |
| `Pages` | 可选的`Variant`参数,用于指定要打印的页面,例如`1, 11 - 21, 31`。 |
| `PageType` | 可选的`Variant`参数,用于指定是否打印所有页面(`wdPrintAllPages`,0,默认值)、奇数页(`wdPrintOddPagesOnly`,1)或偶数页(`wdPrintEvenPagesOnly`,2)。 |
| `PrintToFile` | 可选的`Variant`参数,设置为`True`可将打印操作的输出定向到文件。 |
| `Collate` | 可选的`Variant`参数,用于打印多份文档时指定是否分页(`True`)或不分页(`False`)。 |
| `ActivePrinterMacGX` | 可选的`Variant`参数,在安装了QuickDraw GX的Macintosh上用于指定打印机。 |
| `ManualDuplexPrint` | 可选的`Variant`参数,设置为`True`可在没有双面打印功能的打印机上进行双面打印。当`ManualDuplexPrint`为`True`时,可以使用`Options`对象的`PrintOddPagesInAscendingOrder`属性或`PrintEvenPagesInAscendingOrder`属性按升序打印奇数页或偶数页,以创建手动双面打印效果(将打印了奇数页的纸张翻面后重新装入打印机以打印偶数页)。此参数仅在某些语言中可用。 |
| `PrintZoomColumn` 和 `PrintZoomRow` | 可选的`Variant`参数,分别用于指定水平(`PrintZoomColumn`)和垂直(`PrintZoomRow`)方向上每页打印的页数。每个属性可以是1、2或4。 |
| `PrintZoomPaperWidth` | 可选的`Variant`参数,用于指定打印页面缩放的宽度(以缇为单位)。 |
| `PrintZoomPaperHeight` | 可选的`Variant`参数,用于指定打印页面缩放的高度(以缇为单位)。 |
以下是打印文档的示例代码:
```vba
' 在后台打印活动文档的三份分页副本
ActiveDocument.PrintOut Background:=True, Copies:=3, Collate:=True
' 打印活动文档的第2页到第5页
ActiveDocument.PrintOut Range:=wdPrintFromTo, From:=2, To:=5
' 每张纸打印活动文档的两个虚拟页面
ActiveDocument.PrintOut PrintZoomColumn:=2, PrintZoomRow:=1
```
#### 4. 使用`ActiveDocument`对象
`ActiveDocument`对象返回一个`Document`对象,代表当前正在处理的文档,即Word窗口中具有焦点的文档。`ActiveDocument`对象的行为类似于`Document`对象,但在使用时需要注意以下两个可能的问题:
- **在帮助系统中查找信息的问题**:`ActiveDocument`实际上是`Application`对象的一个属性,因此其作为实际对象的状态有些模糊。在帮助系统、MSDN系统或VBA编辑器对象浏览器中查找`ActiveDocument`对象时,需要先定位`App
0
0
复制全文
相关推荐









