网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
Delphi与Ole,Word,Excel,查找与替换等
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式
使用CreateOleObject方式调用Word相比Service控件的最大缺点就是不支持代码的自动生成,但是我们充分的利用VBA代码就可以弥补这个功能。Word作为一个功能强大的Com,可以很容易被编程工具调用,成为办公自动化系统中处理文档的强有力的嵌套工具,尤其是充分Word本身的录制宏的功能,更进一步减轻了编程的负担。下面就如何在Delphi里面利用Word的VBA代码进行一些总结。1、  生成VBA代码。Word本身具有很强的可扩展性,尤其是支持用户自定义功能,其实现的主要方式就是通过VBA代码来实现的。在“工具->宏->Visual Basic编辑器”里面就可以看到具体的宏代码,可以直接进行编辑。而且还可以使用录制宏的功能自动生成宏代码。方法是选择“工具->宏->录制新宏”,然后执行自己想通过程序实现的功能,如存盘、打印等功能,此时Word一边执行你要实现功能,一边将你的操作生成了一个宏,在实现功能后,可以选择“工具->宏->VisualBasic编辑器”,查看生成的宏代码。 例如:我们要将文档中的“讨论”全部替换成“研讨”。a.  点击“工具->宏->录制新宏”,直接点击确定,默认的宏保存到了Normal.dot系统公用模板里面。b.  点击“编辑->查找”,出现弹出对话框,输入查找和替换的字,点确定。进行替换。c.  结束宏的录制,点击结束按钮。d.  按F11或者“工具->宏->Visual Basic 编辑器”,查看宏代码。缺省查看Normal里面的模块里面的NewMacros模块。以下是生成的宏代码:Sub Macro1()'''' Macro1 Macro'' 宏在 2002-2-1 由 yzhshi 录制''    Selection.Find.ClearFormatting    Selection.Find.Replacement.ClearFormatting    With Selection.Find        .Text = "讨论"        .Replacement.Text = "研讨"        .Forward = True        .Wrap = wdFindContinue        .Format = False        .MatchCase = False        .MatchWholeWord = False        .MatchByte = True        .MatchWildcards = False        .MatchSoundsLike = False        .MatchAllWordForms = False    End With    Selection.Find.Execute Replace:=wdReplaceAllEnd Sub2、  精简宏代码。通常,生成的宏代码有很多语句对你要实现的功能来说都是多余的。我们要做的就是如何找到我们需要的代码。此时我们查看具体的代码,剔除明显没有用途的代码,然后光标停留在宏上面,按F5执行,看是否实现功能,逐步精简,得到最小代码。此步骤可参考Word的VBA帮助来判断代码是否有用。 如上例,精简下来,剩下以下代码。Sub Macro1()    Selection.Find.ClearFormatting    Selection.Find.Replacement.ClearFormatting    With Selection.Find        .Text = "讨论"        .Replacement.Text = "研讨"    End With    Selection.Find.Execute Replace:=wdReplaceAllEnd Sub 3、  转换成Delphi代码。这一步其实很简单,对于VBA代码,只需要在前面添加Word的句柄或者文档的句柄或者文档的句柄.Application就可以直接操作了。例:逐句翻译:(Word_Handle是Word的句柄)(VB)     Selection.Find.ClearFormatting(Delphi)  Word_Handle.Selection.Find.ClearFormatting; (VB)     Selection.Find.Replacement.ClearFormatting(Delphi)  Word_Handle.Selection.Find.Replacement.ClearFormatting;以上两句简单添加上Word的句柄就可以了。 (VB)     With Selection.Find              Text = "讨论"              Replacement.Text = "研讨"End With(Delphi)  Word_Handle.Selection.Find.Text := ''讨论'';  Word_Handle.Selection.Find.Replacement.Text := ''研讨'';以上几句因为Delphi不支持Variant的With结构,所以分开写。同时转换成Delphi语法。 (VB)    Selection.Find.Execute Replace:=wdReplaceAll(Delphi) Word_Handle.Selection.Find.Execute(Replace:=2);上面一句存在一个小技巧,如何找到常量wdReplaceAll的数值为2?这里有几个办法,一:直接use Word2000或者word97单元,那么直接使用常量wdReplaceAll就可以了;二:到Word2000.pas或者Word97.pas里面查找wdReplaceAll的数值;三:直接使用VBA代码见wdReplaceAll的数值显示出来。办法是写一个小过程,然后执行,如下:Sub ShowValue()  MsgBox wdReplaceAllEnd Sub 最后补充一下,很多关于Word的东西可以从Word的VBA帮助里面获得。具体文件在?:"Program files"Microsoft Office"Office10"2052(XP)下,VBAWD10.CHM,其他版本路径基本类似。 

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号