处理 Document 对象

在 Visual Basic 中,修改文件的方法是 Document 对象或 Documents 集合的方法。 本主题包括与以下部分中确定的任务相关的 Visual Basic 示例。

新建文档

Documents 集合包含所有打开的文档。 若要新建文档,可使用 Add 方法将一个 Document 对象添至 Documents 集合。 下面的指令创建一个文档。

Documents.Add

创建文档的更好方法是将返回值赋给一个对象变量。 Add 方法返回一个引用新文档的 Document 对象。 在下面的示例中,将 Add 方法返回的 Document 对象赋给一个对象变量。 然后设置该 Document 对象的部分属性和方法。 使用对象变量可以很容易地控制新文档。

Sub NewSampleDoc() 
    Dim docNew As Document 
    Set docNew = Documents.Add 
    With docNew 
        .Content.Font.Name = "Tahoma" 
        .SaveAs FileName:="Sample.doc" 
    End With 
End Sub

打开文档

若要打开现有文档,请将 Open 方法与 Documents 集合一起使用。 下面的指令打开 MyFolder 文件夹中名为 Sample.doc 的文档。

Sub OpenDocument() 
    Documents.Open FileName:="C:\MyFolder\Sample.doc" 
End Sub

保存现有文档

若要保存单个文档,请将 Save 方法与 Document 对象一起使用。 下面的指令保存名为 Sales.doc 的文档。

Sub SaveDocument() 
    Documents("Sales.doc").Save 
End Sub

通过对 Documents 集合应用 Save 方法,可以保存所有打开的文档。 下列指令保存所有打开的文档。

Sub SaveAllOpenDocuments() 
    Documents.Save 
End Sub

保存新文档

若要保存单个文档,请将 SaveAs2 方法与 Document 对象一起使用。 The following instruction saves the active document as "Temp.doc" in the current folder.

Sub SaveNewDocument() 
    ActiveDocument.SaveAs FileName:="Temp.doc"
End Sub

FileName 参数只能包含文件名或完整路径 (例如“C:\Documents\Temporary File.doc”) 。

关闭文档

若要关闭单个文档,请将 Close 方法与 Document 对象一起使用。 下面的指令关闭并保存名为 Sales.doc 的文档。

Sub CloseDocument()
    Documents("Sales.doc").Close SaveChanges:=wdSaveChanges 
End Sub

可以通过应用 Documents 集合的 Close 方法关闭所有打开的文档。 下面的指令在不保存更改的情况下关闭所有的文档。

Sub CloseAllDocuments() 
    Documents.Close SaveChanges:=wdDoNotSaveChanges
End Sub

下面的示例在每个文档关闭之前提示用户保存文档。

Sub PromptToSaveAndClose()
    Dim doc As Document
    For Each doc In Documents 
        doc.Close SaveChanges:=wdPromptToSaveChanges
    Next
End Sub

激活文档

若要更改活动文档,请将 Activate 方法与 Document 对象一起使用。 下面的指令激活已打开的名为 Sales.doc 的文档。

Sub ActivateDocument() 
    Documents("Sales.doc").Activate 
End Sub

确定文档是否已打开

若要确定文档是否处于打开状态,可使用 For Each...Next 语句枚举 Documents 集合中的元素。 在下面的示例中,如果文档 Sample.doc 是打开的,将激活该文档,如果该文档当前尚未打开,则将打开该文档。

Sub ActivateOrOpenDocument() 
    Dim doc As Document 
    Dim docFound As Boolean 
 
    For Each doc In Documents 
        If InStr(1, doc.Name, "sample.doc", 1) Then 
            doc.Activate 
            docFound = True 
            Exit For 
        Else 
            docFound = False 
        End If 
    Next doc 
 
    If docFound = False Then Documents.Open FileName:="Sample.doc" 
End Sub

引用活动文档

ActiveDocument 属性返回一个 Document 对象,该对象引用活动文档 (焦点) 的文档,而不是按名称或索引号 Documents("Sales.doc") 引用文档。 下面的示例显示活动文档的名称,如果没有打开的文档,则将显示一条消息。

Sub ActiveDocumentName() 
    If Documents.Count >= 1 Then 
        MsgBox ActiveDocument.Name 
    Else 
        MsgBox "No documents are open" 
    End If 
End Sub

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。