OleWord时一些用用的代码

2024-04-26 16:38
文章标签 代码 用用 oleword

本文主要是介绍OleWord时一些用用的代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

[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:  是否以只读方式打开文档
AddToRecentFiles:  是否将文件添加到"文件"菜单底部的最近使用文件列表中
PassWordDocument:  打开此文档时所需要的密码
PasswordTemplate:  打开此模板时所需要的密码
Revert:  如果文档已经,是否重新打开文档
WritePasswordDocument:  保存对文档更改时所需要的密码
WritePasswordTemplate:  保存对模板进行更改时所需要的密码
Format:  打开文档时所需使用的文件转换器
Encoding:  所使用的文档代码页
Visible:  打开文档的窗口是否可见

举例:
Doc_Handle:=Word_Ole.Documents.open(FileName:=Doc_File,ReadOnly:=False,
            AddToRecentFiles:=False);

[b]四、Delphi程序保存Word文稿[/b]
格式: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);

[b]五、从数据库读取文件到本地硬盘和从本地硬盘读取文件到数据库[/b]

在数据库上使用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;

[b]六、全局消息的定义[/b]
因为word和Delphi程序是两个软件,相互之间通讯比较麻烦,所以使用全局消息的方法进行。
全局消息必须首先注册,Windows返回系统空闲的消息号,当注册的消息相同时,
Windows系统返回同一个值,这样就保证了使用这个消息号在两个程序之间通讯。

定义消息的办法:
    szMessageString: pchar = 'XIDIAN_11_Stone';
    FMyJoinMessage := RegisterWindowMessage(szMessageString);

发送消息的方法:
    SendMessage(对方句柄,消息,消息附带短变量,消息附带长变量)

[b]七、Delphi程序接收消息的方法[/b]
    Delphi接收消息有两种,一是重载特定消息,二是重载WndProc函数,在里面选择相应消息进行处理。
    法一,每次只能处理一条消息,而法二能够同时处理多条消息。

    对于法二,声明如下:
       procedure WndProc(var Message: TMessage);override
     必须注意,使用时需要在处理完自己消息处理后继承WndProc(Message)函数,否则系统会崩溃!

[b]八、Word中Combo对话框的动态生成以及Change事件[/b]
    建立类模块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)

[b]九、一些Word的事件[/b]
    VBA代码中处理的Word事件有:Document_Close
    Application事件中需要处理的有:DocumentBeforeClose,DocumentChange。

    Document_Close:事件在文档关闭时产生事件
    DocumentBeforeClose:在文档被关闭以前先于Word判断文档是否保存,给出相应提示并进行相应处理。
    DocumentChange:文档切换,在文档从自己修改的文稿和其他人修改的文稿之间切换产生事件,
主要处理设置文档权限等。
 

这篇关于OleWord时一些用用的代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/938100

相关文章

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

使用Python实现全能手机虚拟键盘的示例代码

《使用Python实现全能手机虚拟键盘的示例代码》在数字化办公时代,你是否遇到过这样的场景:会议室投影电脑突然键盘失灵、躺在沙发上想远程控制书房电脑、或者需要给长辈远程协助操作?今天我要分享的Pyth... 目录一、项目概述:不止于键盘的远程控制方案1.1 创新价值1.2 技术栈全景二、需求实现步骤一、需求

Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码

《Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码》:本文主要介绍Java中日期时间转换的多种方法,包括将Date转换为LocalD... 目录一、Date转LocalDateTime二、Date转LocalDate三、LocalDateTim

jupyter代码块没有运行图标的解决方案

《jupyter代码块没有运行图标的解决方案》:本文主要介绍jupyter代码块没有运行图标的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录jupyter代码块没有运行图标的解决1.找到Jupyter notebook的系统配置文件2.这时候一般会搜索到

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放