精通在VFP中调用WORD的方法.docx
《精通在VFP中调用WORD的方法.docx》由会员分享,可在线阅读,更多相关《精通在VFP中调用WORD的方法.docx(35页珍藏版)》请在冰豆网上搜索。
精通在VFP中调用WORD的方法
在VFP中调用WORD的基本方法
因WORD具有很强的文字排版和表格处理能力,在开发VFP应用程序过程中如果能巧妙地使用WORD,将极大地增强VFP的输出功能,设计出更加美观的文档和表格版面。
下面本人结合实际开发经验介绍一下在VFP中调用和控制WORD的基本方法,所举实例都在VisualFoxPro6.0(简体中文版)中调试通过。
一、建立WORD应用程序对象,新建、打开、保存WORD文档
1、建立对象
在VFP中调用WORD首先必须先建立一个WORD应用程序对象:
MyWord=CreateObject('Word.Application')
MyWord是一个自定义的对象变量,代表WORD应用程序。
2、显示WORD窗口
MyWord.Visible=.T.
如果将MyWord.Visible的值设为.F.,则关闭WORD窗口,但WORD程序仍在后台运行,仍可以对其进行控制。
3、新建一个WORD文档
MyWord.Documents.Add
Documents是由Word当前打开的所有Document对象所组成的集合。
Document代表一个WORD文档对象。
Documents集合对象的两个常用属性:
(1)Count属性
统计Documents集合对象中Document对象数量,即当前打开文档的数量。
(2)Name属性
Document对象的文件名称。
下例显示Documents集合对象中文档总数和每个文档的名称。
MyWord.Documents.Count
ForEachMyDocINMyWord.Documents
?
MyDoc.Name
NextMyDoc
4、打开一个已存在的WORD文档
MyWord.Documents.Open('e:
\abcef.doc')
文件名称要包含完整的路径。
5、激活文档,使文档成为当前激动文档
MyWord.Documents(index).Activate
index是文档的名称或索引序号。
新建的文档或刚打开的文档默认为当前活动文档。
可用ActiveDocument属性返回一个Document对象,该对象代表活动文档。
6、保存文档
MyWord.Documents(index).Save
index是文档的名称或索引序号。
如:
(1)MyWord.Documents
(1).Save
保存文档集合中第一个文档。
(2)MyWord.Documents('abcef.doc').Save
保存文档集合中名为abcef.doc的文档。
(3)MyWord.ActiveDocument.Save
保存当前活动的文档。
(4)MyWord.Documents.Save
保存所有文档。
7、页面设置
PageSetup对象代表页面设置说明,它包含了文档的所有页面设置属性(左边距、下边距、纸张大小等)。
常用的有以下几个属性:
(1)Orientation属性
返回或设置页面方向,数值型:
0-纵向1-横向。
(2)TopMargin属性
返回或设置页面上部边缘与正文文本上部边界之间的距离(以磅为单位)。
数值型。
(3)BottomMargin属性
返回或设置页面底边与正文文本边界之间的距离(以磅为单位)。
数值型。
(4)LeftMargin属性
返回或设置页面左边缘与正文左边界之间的距离(以磅为单位)。
数值型。
(5)RightMargin属性
返回或设置正文右边界与页面右边距之间的距离(以磅为单位)。
数值型。
(6)PageWidth属性
返回或设置页面宽度(以磅为单位)。
数值型。
(7)PageHeight属性
返回或设置页面高度(以磅为单位)。
数值型。
注:
1英寸=2.54厘米1英寸=72磅
下例进行页面设置,页面横向、顶部边距2.54厘米、底部边距2.54厘米、左边距3.17厘米、右边距3.17厘米、页面宽度与高度分别为21和29.7厘米(即A4纸)。
WithMyWord.ActiveDocument.PageSetup
.Orientation=1
.TopMargin=2.54/2.54*72
.BottomMargin=2.54/2.54*72
.LeftMargin=3.17/2.54*72
.RightMargin=3.17/2.54*72
.PageWidth=21/2.54*72
.PageHeight=29.7/2.54*72
EndWith
8、打印文档
MyWord.ActiveDocument.PrintOut
9、关闭文档
(1)MyWord.Documents.Close(WdSaveOptions)
关闭所有文档。
WdSaveOptions是可选参数:
其值为0时,表示关闭文档时,不保存自上次保存以来所做的修改;其值为-1时,表示关闭文档时,保存自上次保存以来所做的修改。
如果省略该参数(下同),可写为:
MyWord.Documents.Close,关闭文档时,将保存自上次保存以来所做的修改。
(2)MyWord.ActiveDocument.Close(WdSaveOptions)
关闭当前活动的文档。
(3)MyWord.Documents
(1).Close(WdSaveOptions)
关闭文档集合中第一个文档。
(4)MyWord.Documents('abcef.doc').Close(WdSaveOptions)
关闭文档集合中名为abcef.doc的文档。
10、退出WORD
MyWord.Quit
二、Font对象
该对象包含了各种字体属性(字体名称、字体大小、颜色等)。
常用的属性有以下几种:
1、Name属性
返回或设置字体名称,字符型。
如:
"宋体"、"黑体"、"仿宋"、"华文仿宋"等。
2、Size属性
返回或设置字体大小(以磅值表示),数值型。
一号字是26磅,二号字是22磅,三号字是16磅,四号字是14磅,五号字是10磅。
3、Bold属性
如果该属性值为.T.,则将字体或范围的格式设置为加粗格式。
逻辑型。
4、Italic属性
如果为.T.,则设置字体或区域的格式为倾斜。
逻辑型。
5、Color属性
该属性返回或设置指定的Border或Font对象的24位颜色。
该属性值是RGB函数返回的值。
如:
RGB(255,0,0)为红色。
6、Underline属性
该属性返回或设置应用于字体或区域的下划线的类型。
数值型。
0-无下划线,1-下划线为单线,3-下划线为双线。
7、UnderlineColor属性
该属性返回或设置指定Font对象的下划线的24位颜色。
该属性值是RGB函数返回的值。
8、Subscript属性
如果该属性值为.T.,则将字体格式设为下标。
9、Superscript属性
如果该属性值为.T.,则将字体格式设为上标。
10、Spacing属性
返回或设置字符的间距。
以磅为单位,数值型。
11、Scaling属性
返回或设置用于字体的缩放比例。
本属性以当前字体大小的百分比水平拉长或压缩文字(缩放范围从1到600)。
数值型。
下列示例设置所选区域的字体属性:
WithMyWord.Selection.Font
.Name="仿宋"EndWith
.Size=22
.Bold=.T.
.Italic=.T.
.Color=RGB(0,0,0)
.Underline=3
.UnderlineColor=RGB(255,0,0)
EndWith
三、Paragraph和Paragraphs集合对象
Paragraph代表选定内容、范围或文档内的一个段落。
Paragraphs集合包含了所选内容、范围或文档中的所有段落。
Paragraph对象为Paragraphs集合的一个成员。
可用Paragraphs(index)返回一个Paragraph对象,其中index为索引号。
下例将活动文档的第一段右对齐。
MyWord.ActiveDocument.Paragraphs
(1).Alignment=2
1、添加段落
可用Add、InsertParagraph、InsertParagraphAfter或InsertParagraphBefore方法在文档中添加一个空段落。
(1)Add方法
语法:
expression.Add(Range)
expression 必需。
该表达式返回一个Paragraphs对象。
Range Variant类型,可选。
要在其前添加新段落的范围,新的段落不替换该范围。
如果不指定Range,则将新段落添加至所选内容或范围之后,或者添加至文档最后,具体情况取决于expression的设置。
下例在所选内容之后添加一个段落。
MyWord.Selection.Paragraphs.Add
下例在所选内容中第一段之前添加一个段落标记。
Range1=MyWord.Selection.Paragraphs
(1).Range
MyWord.Selection.Paragraphs.Add(Range1)
下例在活动文档第二段之前添加一个段落标记。
Range1=MyWord.ActiveDocument.Paragraphs
(2).Range
MyWord.ActiveDocument.Paragraphs.Add(Range1)
下例在活动文档的末尾添加一个新的段落标记。
MyWord.ActiveDocument.Paragraphs.Add
(2)InsertParagraph方法
用新段落替换指定区域或选定部分。
应用本方法后,该区域或选定内容将更改为新段落。
语法:
expression.InsertParagraph
expression 必需。
该表达式返回一个Range或Selection对象。
说明:
如果在使用本方法之前先使用Collapse方法,可以不覆盖该区域或所选内容。
用InsertParagraphAfter方法可在Range或Selection对象后插入一个新段落。
下例在活动文档开始处插入一个新段落。
MyWord.ActiveDocument.Range(0,0).InsertParagraph
(3)InsertParagraphAfter方法
在区域或所选内容之后插入段落标记。
在应用本方法之后,该区域或所选内容将扩展至包括新段落。
语法:
expression.InsertParagraphAfter
expression必需。
该表达式返回一个Range或Selection对象。
下例在当前段落之后插入一个新段落。
MyWord.Selection.InsertParagraphAfter
(4)InsertParagraphBefore方法
在指定的所选内容或区域前插入一个新段落。
在应用本方法之后,该区域或所选内容将扩展至包括新段落。
语法:
expression.InsertParagraphBefore
expression必需。
返回Range或Selection对象的表达式。
下例在活动文档开始处插入一个新段落。
MyWord.ActiveDocument.Range(0,0).InsertParagraphBefore
(5)TypeParagraph方法
插入一个新的空段落。
如果所选内容没有折叠为一个插入点,则新段将覆盖所选内容。
用InsertParagraphAfter或InsertParagraphBefore方法可插入一个新段而不删除所选内容。
语法:
expression.TypeParagraph
expression必需。
该表达式返回一个Selection对象。
2、设置段落格式
设置段落格式的常用属性:
(1)FirstLineIndent属性
返回或设置首行缩进或悬挂缩进的大小(以磅值表示)。
用正数设置首行缩进的尺寸,用负数设置悬挂缩进的尺寸。
数值型。
(2)LeftIndent属性
返回或设置一个值,该值代表指定段落、表格行或HTML分段的左缩进(以磅为单位)。
数值型。
(3)RightIndent属性
返回或设置指定段落的右缩进量(以磅为单位)。
数值型。
(4)Alignment属性
返回或设置一个指定段落的对齐方式。
其值:
0-左对齐1-居中对齐2-右对齐3-两端对齐。
(5)LineSpacing属性
返回或设置指定段落的行距(以磅为单位)。
数值型。
(6)HangingPunctuation属性
如果该属性值为.T.,则指定段落中的标点将可以溢出边界。
使用Format属性可返回一个或多个段落的ParagraphFormat对象。
ParagraphFormat属性返回所选内容、区域、样式、Find对象或Replacement对象的ParagraphFormat对象。
下例将活动文档中的首段设置为右对齐。
MyWord.ActiveDocument.Paragraphs
(1).Alignment=2
下例活动文档所有内容的有关范围设置段落格式:
行距12磅,首行缩进20磅。
WithMyWord.ActiveDocument.Content.ParagraphFormat
.LineSpacing=12
.FirstLineIndent=20
EndWith
四、Range和Selection对象
(1)Range对象
该对象代表文档中的一个连续范围。
每一个Range对象由一起始和一终止字符位置定义。
和文档中书签的使用方法类似,使用Range对象识别文档的指定部分。
但和书签不同,Range对象只在定义该对象的过程正在运行时才存在。
Range对象和所选内容相互独立。
也就是说,可定义和复制一个范围而不需改变所选内容。
还可在文档中定义多个范围,但每一个窗格中只能有一个所选内容。
可用Range方法返回一个Range对象,该对象由指定起始和终止字符位置定义。
下例返回代表活动文档前10个字符的Range对象。
myRange=MyWord.ActiveDocument.Range(0,10)
可用Range属性返回一个Range对象,该对象由其他对象的起点和终点定义。
Range对象可用于多种对象(例如,Paragraph、Bookmark和Cell)。
下例返回对应于活动文档第一段的Range对象。
aRange=MyWord.ActiveDocument.Paragraphs
(1).Range
下例返回对应于活动文档第二至第四段的Range对象。
Range1=MyWord.ActiveDocument.Paragraphs
(2).Range
Range2=MyWord.ActiveDocument.Paragraphs(4).Range
aRange=MyWord.ActiveDocument.Range(Range1.Start,Range2.End)
(2)Selection对象
该对象代表窗口或窗格中的当前所选内容。
所选内容代表文档中被选定(或突出显示的)的区域,若文档中没有所选内容,则代表插入点。
每个文档窗格只能有一个活动的Selection对象,并且整个应用程序中只能有一个活动的Selection对象。
用Selection属性可返回Selection对象。
如果没有使用Selection属性的对象识别符,Word将返回活动文档窗口的活动窗格中的所选内容。
下列示例从活动文档复制当前所选内容。
MyWord.Selection.Copy
下列示例剪切Documents集合中第三个文档的所选内容。
访问文档的当前所选内容时,文档无需处于活动状态。
MyWord.Documents(3).ActiveWindow.Selection.Cut
用Word处理文档时,通常先选定文字,然后对所选内容进行操作,例如设置文字格式或键入文字。
Select方法可激活一个对象。
例如,下列指令选定活动文档中的第一个单词。
MyWord.ActiveDocument.Words
(1).Select
(3)常用属性
①Start属性
该属性返回或设置所选内容、区域或书签起始字符的位置。
数值型。
如果将本属性的值设置为大于End属性的值,则将End属性的值设为与Start属性的值相同。
起始字符位置是指距文档该部分开头最近的字符位置。
本属性返回起始字符相对于文档该部分开头的位置。
文字部分的起始字符位置为0。
通过设置本属性可以更改所选内容、区域或书签的大小。
下例返回活动文档第二段的起始字符位置和第四段的结束字符位置。
这些字符位置用于创建区域myRange。
Pos1=MyWord.ActiveDocument.Paragraphs
(2).Range.Start
Pos2=MyWord.ActiveDocument.Paragraphs(4).Range.End
myRange=MyWord.ActiveDocument.Range(Pos1,Pos2)
下例通过起始和结束字符位置判断所选内容的长度。
SelLength=MyWord.Selection.End-MyWord.Selection.Start
下例将myRange起始字符的位置向右移动一个字符(使该区域缩小一个字符)。
myRange=MyWord.Selection.Range
myRange.SetRange(myRange.Start+1,myRange.End)
②End属性
返回或设置所选内容、区域或书签中结束字符的位置。
数值型。
如果本属性设置的值小于Start属性的值,则Start属性将被设成同一值(即Start与End属性值相等)。
下例将myRange的结束位置移动一个字符。
myRange=MyWord.ActiveDocument.Paragraphs
(1).Range
myRange.End=myRange.End-1
③Text属性
返回或设置指定区域或所选内容中的文本。
字符型。
Text属性返回选定部分或区域的无格式纯文本。
设置该属性,可替换该区域或所选内容的文本。
示例用“Dear”替换活动文档的第一个词。
MyWord.ActiveDocument.Words
(1).Text="Dear"
④Type属性
该属性返回Selection对象选择的类型,返回值(只读)如下:
0-无Selection对象1-IP类型2-普通文本
3-图文框4-表格列5-表格行
6-块状区域7-线形8-图形集合
下例将所选内容复制到新文档中。
IfMyWord.Selection.Type=2
MyWord.Selection.Copy
MyWord.Documents.Add.Content.Paste
EndIf
⑤Information属性
返回有关指定的所选内容或区域的信息。
只读。
语法:
expression.Information(Type)
expression 必需。
该表达式返回一个Range或Selection对象。
Type数值型,必需。
消息类型。
以下是消息类型:
1-返回页码,在该页中包含指定的所选内容或区域的活动结尾。
如果设置一个起始页码或进行其他手动调整,则返回经调整的页码(与3不同)。
2-返回节号,在该节中包含了指定的所选内容或区域的活动结尾。
3-返回页码,在该页中包含指定的所选内容或区域的活动结尾。
从文档开头计数。
忽略任何对页码的手动调整(与1不同)。
4-返回与所选内容或区域相关联的文档的页数。
5-返回指定的所选内容或区域的水平位置。
该位置是所选内容或区域的左边缘与页面的左边缘之间的距离,以磅为单位(20缇=1磅)。
如果所选内容或区域不可见,则该参数返回-1。
6-返回所选内容或区域的垂直位置,即所选内容的上边缘与页面的上边缘之间的距离,以磅为单位(20缇=1磅)。
如果所选内容未显示在文档窗口中,则该参数返回-1。
7返回指定的所选内容或区域相对于周围最近的正文边界左边缘的水平位置,以磅为单位(20缇=1磅,72磅=1英寸)。
如果所选内容或区域未处于屏幕区域中,则该参数返回-1。
8-返回所选内容或区域相对于周围最近的正文边界的上边缘的垂直位置,以磅为单位(20缇=1磅,72磅=1英寸)。
该参数可用于在文本框或表格中确定插入点的位置。
如果所选内容未在屏幕中显示,则该参数返回-1。
9-返回指定的所选内容或区域中第一个字符的列位置。
如果所选内容或区域是折叠的,则返回紧靠所选内容或区域右侧的字符列编号(该编号与状态栏中“列”前面的字符列数相同)。
10-返回指定的所选内容或区域中第一个字符的行位置。
如果所选内容或区域是折叠的,则返回紧靠所选内容或区域右侧的字符行编号(该编号与状态栏中“行”前面的字符行数相同)。
11-如果所选内容或区域是一个完整的图文框或文本框,则该参数返回.T.。
12-如果所选内容位于表格中,则该参数返回.T.。
13-返回所选内容或区域起点所在表格的行号。
14-返回表格行号,在该表格行中包含指定的所选内容或区域的结尾。
15-返回指定的所选内容或区域中表格的最大行数。
16-返回所选内容或区域起点所在表格的列号。
17-返回表格列号,在该表格列中包含指定的所选内容或区域的结尾。
18-返回所选内容或区域中任何行的最大表格列数。
19-返回由Percentage属性设置的当前的放大百分比。
20-返回一个值,该值表明当前的选定模式,如下表所示。
值
选定模式
0(零)
常规选定
1
扩展选择(“EXT”出现在状态栏上)
2
列选择(“列”出现在状态栏上)
21-如果大写字母锁定模式有效,则该参数返回.T.。
22-如果数字键盘锁有效,则该参数返回.T.。
23-如果改写模式有效,则该参数返回.T.。
可用Overtype属性改变改写模式的状态。
24-如果修订功能有效,则该参数返回.T.。
25-如果指定的所选内容或区域位于普通视图的脚注或尾注窗格中,或页面视图的脚注或尾注区内,则本参数返回.T.。
26-如果指定的所选内容或区域位于备注窗格,则该参数返回.T.。
28-如果指定的所选内容或区域位于页眉或页脚窗格中,或者位于页面视图的页眉或页脚中,则该参数返回.T.。
31如果指定的所选内容或区域位于表格的行结尾标记处,则该参数返回.T.。
32-返回一个值,该值表明所选内容相对于脚注、尾注或备注引用的位置,如下表所示。
值
说明
- 1
所选内容或区域包含,但不限于脚注、尾注或备注引用中。
0(零)
所选内容或区域不在脚注、尾注或备注引用之前。
1
所选内容或区域位于脚注引用之前。
2
所选内容或区域位于尾注引用之前。
3
所选内容或区域位于备注引用之前。
33-返回一个值,该值表明包含了指定的所选内容或