在VisualBasic60中创建W.doc_第1页
在VisualBasic60中创建W.doc_第2页
在VisualBasic60中创建W.doc_第3页
在VisualBasic60中创建W.doc_第4页
在VisualBasic60中创建W.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

在Visual Basic 6 0 中创建Word和大家分享这篇日志,我的看法是:原文地址:在Visual Basic&n原文作者:御风天下在Visual Basic 6.0中创建Word/Execl文档摘要:分析了Word对象模型的结构,特别是Document对象及其使用方法,提出了在Visual Basic中创建Word格式文档的方法,并给出了该方法的应用实例。关键词:Visual Basic,Word对象模型,文档引言Word文档是实际工作学习中最为常用的文档格式之一。随着社会信息化程度的提高,一些传统的由人工完成工作逐渐转向由计算机来处理。计算机自动组卷系统便是一个典型的例子。为了追求更高的效率,一些计算机自动组卷系统的单位用户要求由软件输出Word格式的试卷不需排版直接供印刷使用。由于Microsoft Office套件的普及,Word文档、电子表格文档、电子幻灯片等文档日渐常用。虽然在Office中各个程序的文档可以方便地转换,但是这种转换是以失去文档原本的格式为代价的。例如,在自动组卷系统中,存储在Access数据库中的试卷可以通过Access提供的导出功能产生Word文档,但产生的文档是无格式的,需花费大量时间重新排版方可符合用户在试卷格式上的要求。针对这一问题,本文讨论通过研究Word对象模型,提出使用该对象模型创建符合用户所要求的特定格式的Word文档的方法。Word对象模型1、Word对象模型层次结构对象是Visual Basic的基石,几乎在Visual Basic中的每个操作都与修改对象有关。Word的任何元素(如文档、表格、段落、域、书签等)都可以用Visual Basic中的对象来代表。对象代表一个Word的元素,如文档、段落、书签或单个的字符。集合也是一个对象,该对象包含其他数个对象,通常这些对象属于相同的类型,例如,一个集合对象中可包含文档中的所有书签对象。通过使用属性和方法,可以修改单个的对象,也可修改整个的对象集合。Microsoft Word Visual Basic提供一套完整的Word对象模型,这是一个以Application为顶层对象的对象层次结构。其结构如图-1所示。对象由两种类型的成员构成,一种是属性,第二种成员是方法。属性是对象的一个特性或者该对象行为的一个方面。例如,文档属性包含名称、内容、保存状态以及是否启用修订。要更改一个对象的特征,可以修改其属性值。要设置一个属性的值,需在对象的后面紧接一个句点、属性名称、一个等号及新的属性值。下面的示例在MyDoc.doc文档中启用修订。Documents(MyDoc.doc).TrackRevisions=True方法是对象可以进行的动作。例如,只要文档可以打印,Document对象就具有PrintOut方法。方法通常都带有参数,限定动作将如何进行。下面的示例打印活动文档的前三页。ActiveDocument.PrintOut From:=1,To:=3在大多数情况下,方法是动作,而属性是性质。使用方法将导致针对对象的某些事情发生,而使用属性则会返回对象的信息,或者引起对象的某个性质的改变。2、Document对象和Documents集合对象在Visual Basic中,可使用Document对象或Documents集合对象的方法来修改文件。Document对象是本文用来创建Word文档的主要对象。Word对象模型中Documents(Document)对象集(或Document)对象的结构如图-2所示。其中的Paragraphs集合对象与PageSetup对象将是下文的主角。Paragraphs集合对象是由选定内容、范围或文档中的Paragraph对象组成的集合。PageSetup对象代表页面设置描述。PageSetup对象包含了文档的所有页面设置属性(左边距、下边距、纸张大小,等等)。在熟悉了Word对象模型的基础上,我们可以使用Document对象对Word文档进行各种操作,例如:2.1新建一篇文档Documents集合包含所有打开的文档。要新建一篇文档,可使用Add方法将一个Document对象添至Documents集合。新建文档的方法之一是使用Add方法。Add方法将返回Document对象,该对象引用新文档。在下面的示例中,把Add方法返回的Document对象赋予一个对象变量newDoc。然后设置该Document对象的几种属性和方法。通过newDoc对象变量,可以很容易地控制新文档。Set newDoc=Documents.Add With newDoc.Content.Font.Name=Arial.SaveAs FileName:=Sample.docEnd With 2.2打开文档要打开一篇现有的文档,可使用Documents集合的Open方法。下面的代码打开名为MyDocument.doc的文档(该文档位于MyFolder文件夹中)。Documents.Open FileName:=C:MyFolderMyDocument.doc2.3保存一篇现有文档要保存一篇文档,可使用Document对象的Save方法。下面的代码保存名为Sales.doc的文档。Documents(Sales.doc).Save如果对Documents集合应用Save方法,可以保存所有打开的文档。下面的代码保存所有打开的文档。Documents.Save 2.4保存一篇新文档要保存一篇文档,可使用Document对象的SaveAs方法。下面的代码将活动文档保存于当前文件夹,取名为Temp.doc。ActiveDocument.SaveAs FileName:=Temp.docFileName参数可以只包含文件名,也可包含完整的路径(例如C:DocumentsTemporary File.doc)。2.5关闭文档要关闭单个文档,可使用Document对象的Close方法。下面的代码关闭并保存名为Sales.doc的文档。Documents(Sales.doc).Close SaveChanges:=wdSaveChanges可应用Documents集合的Close方法关闭所有的文档。下面的代码在不保存修改的情况下关闭所有的文档。Documents.Close SaveChanges:=wdDoNotSaveChanges在Visual Basic中创建Word文档1、Visual Basic中创建Document对象所有的工作都从Document对象开始,首先在Visual Basic中创建一个Document对象的实例,然后就可以对该实例进行各种可控制:Dim newDoc As Word.Document Set newDoc=new Word.Document一旦创建了Document对象,就可以设置文档的缺省格式,通过设置Content子对象的字体、行间距等属性加以实现:With newDoc.Content.Font.Name=宋体.Content.Font.Size=12.Content.Paragraphs.LineSpacing=15.5 End With由此得到了一个空Word文档。2、向Word文档中添加文本接下来,向空文档中添加文本,这将使用Paragraphs集合对象来完成此项工作。InsertAfter方法将文本插入到Selection或Range对象后;InsertBefore方法将文本插入到Selection或Range对象前。以下代码向文档结尾处添加一个段落并设置本段落格式:With newDoc.Content.InsertAfter示例段落.Paragraphs(NewDoc.Paragraphs.count).Alignment=wdAlignParagraphCenter.Paragraphs(NewDoc.Paragraphs.count).Range.Font.Bold=True.Paragraphs(NewDoc.Paragraphs.count).Range.Font.Size=28 End With可用Paragraphs(index)返回一个Paragraph对象,其中index为索引号;count属性值表示该文档主文字部分中的Paragraph对象数。NewDoc.Paragraphs.count恰好为当前正在添加的文本段落的索引号。如果需要插入表格,可以使用Table对象。Add方法可以在指定范围内新增一表格。下例在活动文档的起始处添加一3 x4的表格。Set myRange=ActiveDocument.Range(Start:=0,End:=0)ActiveDocument.Tables.Add Range:=myRange,NumRows:=3,NumColumns:=4以可以使用制表字符得到表格。以下代码在文档尾部插入一个1x4的表格。NewDoc.Content.InsertAfter得分&vbTab&vbTab&评卷人&vbTab&vbCr创建的表格如图-3所示:3、页面设置当所有段落都添加到文档以后,可以使用PageSetup对象进行页面设置,这需要通过设置PageSetup对象的各种属性来完成。3.1设置分栏和栏间距:newDoc.PageSetup.TextColumns.SetCount NumColumns:=2 newDoc.PageSetup.TextColumns.Spacing=CentimetersToPoints(2)3.2设置页边距:With newDoc.PageSetup.TopMargin=CentimetersToPoints(4.5).BottomMargin=CentimetersToPoints(1.5).LeftMargin=CentimetersToPoints(0.8).RightMargin=CentimetersToPoints(2)End With 3.3设置纸张大小:With newDoc.PageSetup.PageHeight=CentimetersToPoints(28.1).PageWidth=CentimetersToPoints(38.9)End With其他的设置项目不再详述。4、输出文档对创建完毕的文档,我们可以选自保存为磁盘文件或直接打印输出:newDoc.SaveAs FileName:=Sample.docnewDoc.PrintOut应用实例以上方法在笔者为某市市委组织部开发的计算机自动组卷系统中加以应用,该系统流程如图-4所示。该系统产生的试卷要求直接用于考核和选拔基层干部的考试中,首先由出题者输入试卷参数,即组卷规则,然后由软件自动组卷并输出Word格式的试卷。笔者应用上述方法开发的软件系统完全满足了用户需求。系统现已投入运行,极大地提高了工作效率,获得了用户的好评。结束语-VB Execl本文提出的在Visual Basic中创建Word文档的方法基于对象模型,实用性强,也可以用于其它支持ActiveX的开发平台中。VB是常用的应用软件开发工具之一,由于VB的报表功能有限,而且一但报表格式发生变化,就得相应修改程序,给应用软件的维护工作带来极大的不便。因此有很多程序员现在已经充分利用EXECL的强大报表功来实现报表功能。但由于VB与EXCEL由于分别属于不同的应用系统,如何把它们有机地结合在一起,是一个值得我们研究的课题。一、VB读写EXCEL表:VB本身提自动化功能可以读写EXCEL表,其方法如下:1、在工程中引用Microsoft Excel类型库:从工程菜单中选择引用栏;选择Microsoft Excel 9.0 Object Library(EXCEL2000),然后选择确定。表示在工程中要引用EXCEL类型库。2、在通用对象的声明过程中定义EXCEL对象:Dim xlApp As Excel.Application Dim xlBook As Excel.WorkBook Dim xlSheet As Excel.Worksheet 3、在程序中操作EXCEL表常用命令:Set xlApp=CreateObject(Excel.Application)创建EXCEL对象Set xlBook=xlApp.Workbooks.Open(文件名)打开已经存在的EXCEL工件簿文件xlApp.Visible=True设置EXCEL对象可见(或不可见)Set xlSheet=xlBook.Worksheets(表名)设置活动工作表xlSheet.Cells(row,col)=值给单元格(row,col)赋值xlSheet.PrintOut打印工作表xlBook.Close(True)关闭工作簿xlApp.Quit结束EXCEL对象Set xlApp=Nothing释放xlApp对象xlBook.RunAutoMacros(xlAutoOpen)运行EXCEL启动宏xlBook.RunAutoMacros(xlAutoClose)运行EXCEL关闭宏4、在运用以上VB命令操作EXCEL表时,除非设置EXCEL对象不可见,否则VB程序可继续执行其它操作,也能够关闭EXCEL,同时也可对EXCEL进行操作。但在EXCEL操作过程中关闭EXCEL对象时,VB程序无法知道,如果此时使用EXCEL对象,则VB程序会产生自动化错误。形成VB程序无法完全控制EXCEL的状况,使得VB与EXCEL脱节。二、EXCEL的宏功能:EXCEL提供一个Visual Basic编辑器,打开Visual Basic编辑器,其中有一工程属性窗口,点击右键菜单的插入模块,则增加一个模块1,在此模块中可以运用Visual Basic语言编写函数和过程并称之为宏。其中,EXCEL有两个自动宏:一个是启动宏(Sub Auto_Open(),另一个是关闭宏(Sub Auto_Close()。它们的特性是:当用EXCEL打含有启动宏的工簿时,就会自动运行启动宏,同理,当关闭含有关闭宏的工作簿时就会自动运行关闭宏。但是通过VB的自动化功能来调用EXCEL工作表时,启动宏和关闭宏不会自动运行,而需要在VB中通过命令xlBook.RunAutoMacros(xlAutoOpen)和xlBook.RunAutoMacros(xlAutoClose)来运行启动宏和关闭宏。三、VB与EXCEL的相互勾通:充分利用EXCEL的启动宏和关闭宏,可以实现VB与EXCEL的相互勾通,其方法如下:在EXCEL的启动宏中加入一段程序,其功能是在磁盘中写入一个标志文件,同时在关闭宏中加入一段删除此标志文件的程序。VB程序在执行时通过判断此标志文件存在与否来判断EXCEL是否打开,如果此标志文件存在,表明EXCEL对象正在运行,应该禁止其它程序的运行。如果此标志文件不存在,表明EXCEL对象已被用户关闭,此时如果要使用EXCEL对象运行,必须重新创建EXCEL对象。四、举例:1、在VB中,建立一个FORM,在其上放置两个命令按钮,将Command1的Caption属性改为EXCEL,Command2的Caption属性改为End。然后在其中输入如下程序:Dim xlApp As Excel.Application定义EXCEL类Dim xlBook As Excel.Workbook定义工件簿类Dim xlsheet As Excel.Worksheet定义工作表类Private Sub Command1_Click()打开EXCEL过程If Dir(D:tempexcel.bz)=Then判断EXCEL是否打开Set xlApp=CreateObject(Excel.Application)创建EXCEL应用类xlApp.Visible=True设置EXCEL可见Set xlBook=xlApp.Workbooks.Open(D:tempbb.xls)打开EXCEL工作簿Set xlsheet=xlBook.Worksheets(1)打开EXCEL工作表xlsheet.Activate激活工作表xlsheet.Cells(1,1)=abc给单元格1行驶列赋值xlBook.RunAutoMacros(xlAutoOpen)运行EXCEL中的启动宏Else MsgBox(EXCEL已打开)End If End Sub Private Sub Command2_Click()If Dir(D:tempexcel.bz)Then由VB关闭EXCEL xlBook.RunAutoMacros(xlAutoClose)执行EXCEL关闭宏xlBook.Close(True)关闭EXCEL工作簿xlApp.Quit关闭EXCEL End If Set xlApp=Nothing释放EXCEL对象End End Sub 2、在D盘根目录上建立一个名为Temp的子目录,在Temp目录下建立一个名为bb.xls的EXCEL文件。3、在bb.xls中打开Visual Basic编辑器,在工程窗口中点鼠标键选择插入模块,在模块中输入入下程序存盘:Sub auto_open()Opend:tempexcel.bzFor Output As#1写标志文件Close#1 End Sub Sub auto_close()Killd:tempexcel.bz删除标志文件End Sub 4、运行VB程序,点击EXCEL按钮可以打开EXCEL系统,打开EXCEL系统后,VB程序和EXCEL分别属两个不同的应用系统,均可同时进行操作,由于系统加了判断,因此在VB程序中重复点击EXCEL按钮时会提示EXCEL已打开。如果在EXCEL中关闭EXCEL后再点EXCEL按钮,则会重新打开EXCEL。而无论EXCEL打开与否,通过VB程序均可关闭EXCEL。这样就实现了VB与EXCEL的无缝连接。-1.创建Excel对象eole=CREATEOBJECT(Excel.application)2.添加新工作簿eole.Workbooks.add 3.设置第3个工作表为激活工作表eole.Worksheets(sheet3).Activate 4.打开指定工作簿eole.Workbooks.Open(c:templl.xls)5.显示Excel窗口eole.visible=.t.6.更改Excel标题栏eole.Caption=VFP应用程序调用Microsoft Excel7.给单元格赋值eole.cells(1,4).value=XM(XM为数据库字段名)8.设置指定列的宽度(单位:字符个数)eole.ActiveSheet.Columns(1).ColumnWidth=5 9.设置指定行的高度(单位:磅)eole.ActiveSheet.Rows(1).RowHeight=1/0.035(设定行高为1厘米,1磅=0.035厘米)10.在第18行之前插入分页符eole.Worksheets(Sheet1).Rows(18).PageBreak=1 11.在第4列之前删除分页符eole.ActiveSheet.Columns(4).PageBreak=0 12.指定边框线宽度(Borders参数如下)ole.ActiveSheet.Range(b3:d3).Borders(2).Weight=3 13.设置四个边框线条的类型eole.ActiveSheet.Range(b3:d3).Borders(2).LineStyle=1(其中Borders参数:1-左、2-右、3-顶、4-底、5-斜、6-斜/;LineStyle值:1与7-细实、2-细虚、4-点虚、9-双细实线)14.设置页眉eole.ActiveSheet.PageSetup.CenterHeader=报表115.设置页脚eole.ActiveSheet.PageSetup.CenterFooter=第&P页16.设置页眉到顶端边距为2厘米eole.ActiveSheet.PageSetup.HeaderMargin=2/0.035 17.设置页脚到底边距为3厘米eole.ActiveSheet.PageSetup.FooterMargin=3/0.035 18.设置顶边距为2厘米eole.ActiveSheet.PageSetup.TopMargin=2/0.035 19.设置底边距为4厘米eole.ActiveSheet.PageSetup.BottomMargin=4/0.035 20.设置左边距为2厘米veole.ActiveSheet.PageSetup.LeftMargin=2/0.035 21.设置右边距为2厘米eole.ActiveSheet.PageSetup.RightMargin=2/0.035 22.设置页面水平居中eole.ActiveSheet.PageSetup.CenterHorizontally=.t.23.设置页面垂直居中eole.ActiveSheet.PageSetup.CenterVertically=.t.24.设置页面纸张大小(1-窄行8 511 39-宽行14 11)eole.ActiveSheet.PageSetup.PaperSize=1 25.打印单元格网线eole.ActiveSheet.PageSetup.PrintGridlines=.t.26.拷贝整个工作表eole.ActiveSheet.UsedRange.Copy 27.拷贝指定区域eole.ActiveSheet.Range(A1:E2).Copy 28.粘贴eole.WorkSheet(Sheet2).Range(A1).PasteSpecial 29.在第2行之前插入一行eole.ActiveSheet.Rows(2).Insert 30.在第2列之前插入一列eole.ActiveSheet.Columns(2).Insert 31.设置字体eole.ActiveSheet.Cells(2,1).Font.Name=黑体32.设置字体大小eole.ActiveSheet.Cells(1,1).Font.Size=25 33.设置字体为斜体eole.ActiveSheet.Cel

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论