




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Word中内嵌的Com技术可以说Word是对Com技术支持最好的软件,这样说似乎是太极端了一点,但是Word提供的强大的编程接口技术却能够是我们通过程序控制Word的任何一部分。无论是文件的打开、存盘、打印还是文档中表格的自动绘制。通过编程软件,可以灵活的操纵word,这里只以Borland Delphi为例,进行详细描述:1、 在Delphi中调用Word软件文件的方法 在Word中调用Word软件,归纳起来有三种可通过Delphi的控件TOleContainer 将Word嵌入的方法a.使用Delphi提供的Servers控件调用Word,使用Word的属性b.通过真正的Com技术,将Office软件目录中文件MSWORD9.OLB中的类库全部导入Delphi中,c.使用CreateOleObject将启动Word,然后以Ole方式对Word进行控制。2、 对几种方法的难易程度的判别a.通过Delphi的控件TOleContainer 将Word嵌入这是最简单的Ole嵌入,能够直接将Word文档调用,只需要使用ToleContainer.Run就可以将Word文档直接启动。且这样启动的Word文档与Delphi程序是一个整体(从界面上看),但是它存在不可克服的缺点,即不能通过Delphi控制Word文档,也就不能实现将灵活操纵Word的目的。b.使用Delphi提供的Servers控件调用Word,使用Word的属性。使用Delphi的Servers控件来操纵Word,在编程时Delphi能够实现代码提示,总体上看能够较好的实现Delphi对Word的控制,但是还有一些Word的功能不能在Delphi中调用(比如自己编写的VBA宏代码)。且实现功能时本来在VBA代码中可选则参数在Delphi调用的时候必须添加,否则,连编译都不能通过。这种方式启动的Word与Delphi程序分属两个窗体。此办法仅能作为一个参考。c.通过真正的Com技术,将Office软件目录中文件MSWORD9.OLB中的类库全部导入Delphi中,利用Com技术编程,利用真正的Com技术,将MsWord9.OLD文件类库导入,然后利用Com技术进行使用。整体上类似使用Delphi的Servers控件,稍微比Servers控件麻烦,优缺点与Servers控件相同。d.使用CreateOleObject将启动Word,然后以Ole方式对Word进行控制。这种办法是使用以CreateOleObjects方式调用Word,实际上还是Ole,但是这种方式能够真正做到完全控制Word文件,能够使用Word的所有属性,包括自己编写的VBA宏代码。与Servers控件和com技术相比,本方法能够真正地使用Word的各种属性,和在VBA中编写自己的代码基本一样,可以缺省的代码也不需要使用。本方式启动的Word与Delphi程序分属两个窗体。缺点是使用本方法没有Delphi代码提示,所有异常处理均需要自己编写,可能编写时探索性知识比较多。Word宏编辑器进入Word宏编辑器的方法:工具-宏-Visual Basic编辑器,可进入Visual Basic编辑器界面。Word的Visual Basic编辑器界面和真正的Visual Basic编辑器基本相同,在此不再向详述。在VBA代码中,可以添加用户窗体、模块、类模块。用户窗体、模块、类模块的概念和Visual Basic完全相同。注释也与Visual Basic完全相同。可以将光标停留在窗体、模块的任何一个子程序上,直接按“F5”运行当前子程序。Word的宏的概述Word充分地将文档编辑和VB结合起来,真正地实现文档的自动化。使用Word编程,类似于使用Visual Basic,所不同的是,在Word中,能够直接运行某一个子程序,直接看见结果,Word的宏,只能解释运行,而Visual Basic,现在已经能够编写成真正的机器码,从代码的保护上来说,应该尽可能地减少Word的VBA代码数量,尤其是关键的代码。VBA宏,可分成四种:1、和命令名相同的宏如FileSave,FileOpen,如果在VBA代码中包含与Word同名的函数,则直接执行这些VBA代码,忽略Word本身的命令。2、Word内特定的宏这些宏包含AutoExec(启动 Word 或加载全局模板)、AutoNew(每次新建文档时)、AutoOpen(每次打开已有文档时)、AutoClose(每次关闭文档时),AutoExit(退出 Word 或卸载全局模板时)。如果VBA代码中含有这些名称的函数,则满足相应的条件,相应代码就自动执行。3、相应事件的VBA宏这些宏是由事件触发的宏,如Document_Close在文档关闭的时候触发事件,Document_New在新建文档的时候触发,Document_Open在打开文档的时候触发。4、独立的宏自己编写的VBA代码,即不属于上面几种情况的VBA代码,可以被其他VBA代码调用,更重要的是,可以被其他程序调用。这样,我们就可以屏弃Word自动执行的宏,通过Delphi直接调用相应宏来达到目的。Word命令宏的详细描述Word本身的命令函数包含很多,但是无论是word联机帮助还是MSDN帮助,都没有这方面的介绍,因此只能凭自己的实验取探索,初步探测的函数如下:宏名 解释FileNew 新建FileNewDefault新建空白文档 FileSaveAs另存为 FileOpen 打开FileClose关闭 FilePrint打印 FilePrintPreview 打印预览 ToolsCustomize 工具栏里面的自定义 ToolsOptions工具选项ToolsRevisions突出显示修订ToolsReviewRevisions接受或拒绝修订 ToolsRevisionMarksAccept接受修订 ToolsRevisionMarksReject拒绝修订ToolsRevisionMarksToggle修订 ToolsMacro宏 ToolsRecordMacroToggle录制新宏 ViewSecurity安全性ViewVBCode 查看VB编辑器环境 FileTemplates模板和可加载项ToolsProtectUnprotectDocument解除对文档的保护InsertHyperlink插入超级链接 EditHyperlink 编辑超级链接DeleteHyperlink 删除超级链接 EditLinks查看、删除链接 EditPasteAsHyperlink粘贴超级链接 FormatStyle样式EditBookMark书签下面举例说明:一、Delphi程序启动Word采用CreateOleObjects的方法来启动Word,调用VBA代码,具体实现过程为:首先使用GetActiveOleObject(Word.Application)判断当前内存中是否存在Word程序,如果存在,则直接连接,如果没有Word程序,则使用CreateOleObject(Word.Application)启动Word二、Delphi程序新建Word文稿格式:WordDocuments.Add(Template,NewTemplate,DocumentType,Visible)Template: 使用模板的名称,NewTemplate: 新建文档的类型,True表示为模板,False表示为文档DocumentType: 文档类型,默认为空白文档Visible: 打捞的窗口是否可见举例:Doc_Handle:=Word_Ole.Documents.Add(Template:=C:Temlate.dot,NewTemplate:=False);三、Delphi程序打开Word文稿格式:WordDocuments.Open(FileName,ConfirmConversions,ReadOnly,PassWordDocument,PasswordTemplate,Revent,WritePasswordDocument,WritePassWordTemplate,Format,Encoding,Visible)FileName: 文档名(包含路径)Confirmconversions: 是否显示文件转换对话框ReadOnly: 是否以只读方式打开文档AddToRecentFiles: 是否将文件添加到文件菜单底部的最近使用文件列表中PassWordDocument: 打开此文档时所需要的密码PasswordTemplate: 打开此模板时所需要的密码Revert: 如果文档已经,是否重新打开文档WritePasswordDocument: 保存对文档更改时所需要的密码WritePasswordTemplate: 保存对模板进行更改时所需要的密码Format: 打开文档时所需使用的文件转换器Encoding: 所使用的文档代码页Visible: 打开文档的窗口是否可见举例:Doc_Handle:=Word_Ole.Documents.open(FileName:=Doc_File,ReadOnly:=False,AddToRecentFiles:=False);四、Delphi程序保存Word文稿格式:WordDocuments.SaveAs(FileName, FileFormat, LockComments, Password,AddToRecentFiles, WritePassword, ReadOnlyRecommended, EmbedTrueTypeFonts, SaveNativePictureFormat, SaveFormsData, SaveAsAOCELetter)FileName: 文件名。默认为当前文件夹和文件名。FileFormat 文档保存的格式。LockComments 如果为 True,则此文档只允许进行批注。Password 打开文档时的口令。AddToRecentFiles 如果为True,则将文档添至文件菜单中最近使用的文档列表中。WritePassword 保存对文档的修改所需的口令。ReadOnlyRecommended 如果为 True,在每次打开文档时,Word 将建议用户采用只读方式。EmbedTrueTypeFonts 如果为 True,则将文档与 TrueType 字体一起保存。SaveNativePictureFormat 如果为 True,则从其他系统平台(例如 Macintosh)导入的图形仅保存其 Windows 版本。SaveFormsData 如果为 True,则将窗体中用户输入的数据存为一条数据记录。SaveAsAOCELetter 如果文档包含一个附加,当此属性值为 True 时,将文档存为一篇 AOCE 信笺(同时保存邮件)。举例:Word_Ole.Documents.SaveAs(FileName:=Doc_File,FileFormat=wdFormatDocument,AddToRecentFiles=False);五、从数据库读取文件到本地硬盘和从本地硬盘读取文件到数据库在数据库上使用Image二进制字段保存,使用Stream流的方式。创建文件流:Word_FileStream:=TFileStream.Create(Target_Name,fmOpenWrite or fmCreate);Word_FileStream.Position:=0;保存到数据库的Image字段:TBlobField(AdoQuery1.FieldByName(Column_Name).SaveToStream(Word_FileStream);从数据库读取文件到本地硬盘:TBlobField(ADOQuery1.FieldByName(Column_Name).loadfromStream(Word_FileStream);释放文件流:Word_FileStream.Free;六、全局消息的定义因为word和Delphi程序是两个软件,相互之间通讯比较麻烦,所以使用全局消息的方法进行。全局消息必须首先注册,Windows返回系统空闲的消息号,当注册的消息相同时,Windows系统返回同一个值,这样就保证了使用这个消息号在两个程序之间通讯。定义消息的办法:szMessageString: pchar = XIDIAN_11_Stone;FMyJoinMessage := RegisterWindowMessage(szMessageString);发送消息的方法:SendMessage(对方句柄,消息,消息附带短变量,消息附带长变量)七、Delphi程序接收消息的方法Delphi接收消息有两种,一是重载特定消息,二是重载WndProc函数,在里面选择相应消息进行处理。方法一,每次只能处理一条消息,而法二能够同时处理多条消息。对于法二,声明如下:procedure WndProc(var Message: TMessage);override必须注意,使用时需要在处理完自己消息处理后继承WndProc(Message)函数,否则系统会崩溃!八、Word中Combo对话框的动态生成以及Change事件建立类模块Combohander,在内部定义事件Public WithEvents ComboBoxEvent As Office.CommandBarComboBox定义Combo控件产生事件的模块Dim ctlComboBoxHandler As New ComboBoxHandler产生Combo对话框Set Cbo_ChooseDoc = CommandBars(添加的菜单).Controls.Add(Type:=msoControlComboBox, Temporary:=True)进行文件句柄设置,以产生Combo_Change事件Set ctlComboBoxHandler.ComboBoxEvent = Cbo_ChooseDoc 产生事件后,在类模块Combohander内选择ComboBoxEvent的Change事件,即可书写事件代码Sub ComboBoxEvent_Change(ByVal Ctrl As Office.CommandBarComboBox)九、一些Word的事件VBA代码中处理的Word事件有:Document_CloseApplication事件中需要处理的有:DocumentBeforeClose,DocumentChange。Document_Close:事件在文档关闭时产生事件DocumentBeforeClose:在文档被关闭以前先于Word判断文档是否保存,给出相应提示并进行相应处理。DocumentChange:文档切换,在文档从自己修改的文稿和其他人修改的文稿之间切换产生事件,主要处理设置文档权限等。b一、Delphi程序启动Word/b 采用CreateOleObjects的方法来启动Word,调用VBA代码,具体实现过程为: 首先使用GetActiveOleObject( Word.Application )判断当前内存中是否存在Word程序,如果存在, 则直接连接,如果没有Word程序,则使用CreateOleObject( Word.Application )启动Word b二、Delphi程序新建Word文稿/b 格式:WordDocuments.Add(Template,NewTemplate,DocumentType,Visible) Template: 使用模板的名称, NewTemplate: 新建文档的类型,True表示为模板,False表示为文档 DocumentType: 文档类型,默认为空白文档 Visible: 打捞的窗口是否可见 举例:Doc_Handle:=Word_Ole.Documents.Add(Template:= C:Temlate.dot ,NewTemplate:=False); b三、Delphi程序打开Word文稿/b 格式:WordDocuments.Open(FileName,ConfirmConversions,ReadOnly,PassWordDocument, PasswordTemplate,Revent,WritePasswordDocument,WritePassWordTemplate, Format,Encoding,Visible) FileName: 文档名(包含路径) Confirmconversions: 是否显示文件转换对话框 ReadOnly:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025内蒙古省际劳务协作招聘岗位考前自测高频考点模拟试题及完整答案详解
- 3.2 阳光的传播-教学设计 -2023-2024学年华东师大版七年级下册科学
- Unit 9 The wind is blowing 教学设计初中英语牛津上海版2008七年级第二学期-牛津上海版试用本
- 3.4 直线与圆的位置关系说课稿-2025-2026学年初中数学青岛版2012九年级上册-青岛版2012
- 新疆2025年新疆第二医学院招聘89人笔试历年参考题库附带答案详解
- 6.18 从九一八事变到西安事变 教学设计 2023-2024学年部编版八年级历史上学期
- 高中地理 第二章 自然地理环境中的物质运动和能量交换 2.1 大气的热状况与大气运动(1)说课稿 中图版必修1
- 2025福建福州市土地房屋开发总公司招聘2人笔试历年参考题库附带答案详解(3卷合一)
- 2025浙江嘉兴市海宁市马桥街道专职消防队招聘专职消防员1人笔试历年参考题库附带答案详解(3卷合一)
- 吉林省梅河口市曙光镇中学九年级化学上册 第二单元 课题3 制取氧气说课稿 (新版)新人教版
- 2025-2026学年第一学期苏教版二年级数学上册第一单元测试卷及答案
- 第五单元漫步经典第4课时《第九十四(惊愕)交响曲》教学设计-西大版初中音乐八年级上册
- 2025年金融科技行业数字支付发展前景研究报告
- 七上语文月考必考名著《朝花夕拾》高频考点简答70道
- 2025榆林镁业(集团)有限公司招聘(9人)考试参考试题及答案解析
- 爱国教育主题班会课件:看中华崛起展少年担当
- 2025年市场营销自考真题及答案
- 数字化转型文化旅游产业智慧化发展研究报告
- 低空经济全景图:新质生产力驱动下的万亿级新赛道与区域标杆实践
- 硫酸安全培训与防范课件
- 2025年营造林监理工程师试题
评论
0/150
提交评论