与文档有关的对象有Document对象和Documents对象。Document对象表示文档,Documents对象为集合,对所有Document对象进行存储和管理。[大谦Excel,dqexcel点com]
创建文档
使用Documents对象的Add方法创建新文档。
Sub Test()
Dim doc As Document
Set doc = Documents.Add()
Debug.Print ActiveDocument.Name
End Sub
下面新建文档时指定模板路径和名称给Template参数,则新建的文档使用该模板。
Sub Test2()
Dim doc As Document
Set doc = Documents.Add(Template:="C:\Program Files(x86)\Microsoft Office\Templates\2052\StudentReport.dotx", Visible:=True)
End Sub
新建的Word文档如图2-1所示。
图2-1 新建文档使用指定模板
打开和保存文档
使用Documents对象的Open方法打开已经存在的文档。下面的代码以只读方式打开D盘下的test.docx文件。
Sub Test()
Dim doc As Document
Set doc = Documents.Open(FileName:="D:\test.docx", ReadOnly:=True)
Debug.Print doc.Name
End Sub
保存文档时,根据文档的情况使用不同的方法进行操作。对于打开的已经保存过的文档,使用Document对象的Save方法进行保存;对于新建文档,使用Document对象的Save2方法进行保存。
保存文档时常常进行一个判断,当保存过的文档打开后,如果没有被修改,则不必进行保存;被修改过了,进行保存。使用Document对象的Saved属性,可以判断该文档打开后是否进行了修改。如果值为True,说明文档没有被修改,值为False时表示文档被修改了。于是有类似下面的编码方法。
Sub Test()
Dim doc As Document
Set doc = Documents.Open("D:\mytest.docx")
doc.Paragraphs(1).Range.Text = "这是修改后的文档"
doc.Save
End Sub
对于新建的文档,保存时使用Document对象的SaveAs2方法。下面新建一个文档,使用Document对象的SaveAs2方法将它保存为Docx格式的文件。
Sub Test2()
Dim doc As Document
Set doc = Documents.Add()
doc.Paragraphs(1).Range.Text = "这是一个新的文档"
doc.SaveAs2("D:\mytest.docx")
End Sub
将文档另存为PDF文件test.pdf。
Sub Test3()
Dim doc As Document
Set doc = Documents.Add()
doc.Paragraphs(1).Range.Text = "保存为PDF文档"
doc.SaveAs2 FileName:="D:\mytestpdf.pdf", FileFormat:=wdFormatPDF
End Sub
将文档另存为文本文件test.txt。
Sub Test4()
Dim doc As Document
Set doc = Documents.Add()
doc.Paragraphs(1).Range.Text = "保存为TXT文档"
doc.SaveAs2 FileName:="D:\mytesttxt.txt", FileFormat:=wdFormatText
End Sub
文档的引用
每一个新建的或新打开的文档,都会作为Document对象添加到Documents集合中,并且得到一个索引号。第1个添加进集合的索引号为1,第2个的为2,以此类推。当需要对集合中的某个文档进行处理时,可以利用这个索引号找到它,找到它这个操作称为引用。
下面两行代码分别新建一个文档和打开一个已有文件。这两个文档都会自动添加到Documents集合中。查看Documents集合中的文档个数。利用索引号查看集合中两个文档的文件名。
Sub Test()
'使用索引号进行引用
Dim doc As Document
Dim doc2 As Document
Set doc = Documents.Add
Set doc2 = Documents.Open("D:\test.docx")
Debug.Print Documents.Count
Debug.Print Documents(1).Name
End Sub
除了使用索引号引用文档,还可以使用文档的名称进行引用,例如:
Sub Test2()
'使用文档名称进行引用
Dim doc As Document
Dim doc2 As Document
Set doc = Documents.Add
Set doc2 = Documents.Open("D:\test.docx")
Debug.Print Documents.Count
Debug.Print Documents("test.docx").Name
End Sub
关闭文档
使用Document对象的Close方法关闭文档。下面关闭集合中的第1个文档。
Sub Test4()
'关闭文档
Dim doc As Document
Dim doc2 As Document
Set doc = Documents.Add
Set doc2 = Documents.Open("D:\test.docx")
doc.Close
End Sub
文档对象的主要属性和内容
文档对象的主要属性包括字体属性、字符个数、行数、段落数等。用下面的代码设置文档中内容的字体属性。
Sub Test()
Dim doc As Document
Dim rng As Range
Set doc = Documents.Open("D:\test.docx")
Set rng = doc.Content
Debug.Print rng.Text
rng.Font.Size = 20
rng.Bold = True
End Sub
用下面的代码获取文档中的字符个数、行数和段落数等。
Sub Test2()
Dim doc As Document
Dim rng As Range
Set doc = Documents.Open("D:\test2.docx")
'字符个数
Debug.Print doc.ComputeStatistics(wdStatisticCharacters)
'行数
Debug.Print doc.ComputeStatistics(wdStatisticLines)
'段落数
Debug.Print doc.ComputeStatistics(wdStatisticParagraphs)
End Sub
文档的样式
Word文档样式包括内置样式和自定义样式。所有内置样式放在Styles集合中,可以通过遍历和索引获取指定样式。
下面的代码遍历活动文档的所有样式并显示它们的名称。
Sub Test()
'遍历Styles集合对象
Dim sl As Style
For Each sl In ActiveDocument.Styles
Debug.Print sl.NameLocal
Next
End Sub
下面的代码对Styles集合对象进行索引,获取指定的样式。可以使用索引号和名称两种方式进行索引。
Sub Test2()
Dim doc As Document
Set doc = ActiveDocument
Debug.Print doc.Styles(10).Font.Name
Debug.Print doc.Styles("标题 2").Font.Name
Debug.Print doc.Styles(wdStyleCaption).Font.Name
End Sub
下面的代码将找到的Style样式指定给Range对象的Style属性。
Sub Test3()
Dim doc As Document
Dim rng As Range
Set doc = Documents.Open("D:\test2.docx")
Set rng = doc.Paragraphs(1).Range
rng.Style = wdStyleNormal
End Sub
下面的代码自定义样式。首先用Styles对象的Add方法创建一个新的样式对象,然后通过给该对象的指定属性赋值来定义这个新的样式。定义好后,就可以像使用内置样式那样进行使用了。
Sub Test4()
Dim doc As Document
Dim rng As Range
Dim slMy As Style
Set doc = Documents.Open("D:\test2.docx")
'创建和定义新样式
Set slMy = doc.Styles.Add(Name:="NewStyle", Type:=wdStyleTypeParagraph)
slMy.Font.Bold = True
slMy.Font.Size = 20
slMy.Font.Name = "黑体"
'使用新样式
Set rng = doc.Paragraphs(1).Range
rng.Style = "NewStyle"
End Sub
页面设置
下面的代码使用PageSetup对象对文档进行页面设置。
Sub Test()
Dim doc As Document
Dim pg As PageSetup
Set doc = Documents.Open("D:\test2.docx")
Set pg = doc.PageSetup
pg.Orientation = wdOrientLandscape
End Sub