网站首页 工具软件 操作系统 办公软件 网页制作 PHP教程 script脚本专栏 photoshop教程 其他精品教程
我发布的文章 - 教程搜索 - 交流论坛 - 帮助中心 - 网站首页 网络工具 - 常用工具 - 媒体工具 - 系统工具 - 实用工具 NT/2003 - Win Xp - Win2000 - DOS/Win9x - IE/注册表 - Linux - 苹 果 Office - Word - Excel - PowerPoint - 输入法 - 邮件处理 Flash - Dreamweaver - Fireworks - FrontPage - HTMLCSS 基础文章 - PHP函数 - PHP技巧 - 数据库相关 - 高级应用 - PHP安装 - 转载精华 - 常见问题 综 合 类 - 状 态 栏 - 游 戏 类 - 页面背景 - 页面特效 - 页面导航 - 文本操作 - 文本特效 - 图形特效 - 鼠标特效 - 时间日期 - 密 码 类 文字特效 - 按钮与图标 - 色彩运用 - 滤镜魔法 - 综合实例 XML教程 - DELPHI基础教程 - VB教程
首页 -> 其他精品教程 -> VB教程

TOP

用VBA突破WORD查找替换功能 (1)
文章内容
相关信息
用户评论
文章内容


WORD提供了十分强大的查找和替换功能,但是,在日常办公中还会遇到许多该功能完成不了的工作。使用WORD的VBA编写少量的程序代码就可以突破这些限制,完成很多复杂的工作。

本文提供一个查找并替换数字的宏程序,用来完成复杂的数字查找和按一定规则替换数字的功能,简化WORD文档的编撰过程。下面介绍程序设计中需要考虑并克服的几个难点,最后给出源程序及其使用方法。该程序在WORD 2000下开发完成,经测试不能在WORD 97下正常运行。

问题的由来


当需要将WORD文档中的一种单位制的数据转换成另一种单位制的数据时(如将市制或英制转换为公制),不仅要在文档中查找特定单位的数据,还需要用计算器按规则计算目标结果,并将其输入到文档中替换原来的值。如果只是处理少量的数据,这样的操作可以接受。但如果在文档中有几十个或成百上千个这样的数据或有多个同类文档,这个处理过程就会非常繁琐,而且容易出错。

我曾经有过一次这样的经历:一篇WORD文档中有3个十分复杂的表格,有几千个数据,所有的数据需要进行单位变换,开始的时候,我认为比较容易,只要把表格中的数据复制到EXCEL,按规则转换后再写回到WORD文档就可以了,不料由于表格过于复杂,当复制到EXCEL中后,数据面目全非,即使数据全部正确被转换,也很难在WORD中恢复数据的原貌,使本来貌似简单的工作变得异常复杂。

经常遇到这类情况使我决心用WORD的VBA来彻底解决这个问题。但是存在几个棘手的问题,例如选中数据的通用方法、按规则替换数据的方法、只对文档的特定部分进行操作等等。下面将介绍解决这些问题的基本思路。

选中数字的通用方法


使用WORD的查找功能可以找到特定格式的数字,比如由一位整数和两位小数组成的数——2.34、3.45、5.34——可以使用通用数字格式"^#.^#^#"来查找,其中一个^#相当与一位数字(0-9)。如果你需要查找23.2、3.222、4.3、0.12这样的几个数字,只用WORD的查找功能,是很难用一个通用数字格式串找到它们的。那么如何找到它们呢?

首先它们的共同点是都有小数点,所以我们可以利用这一共性,查找"^#.^#"类型的数字,这样我们可以找到所有这样的数字。但WORD不会自动扩展性地选择整个数字,需要手动选择。这一过程可以程序化,让程序自动向前先后搜索,找到并选中整个数字,具体方法请参阅ExtendingSelection1()和ExtendingSelection2()两个过程。

按一定规律替换选中的数字


当找到一个数字之后,需要根据特定的规则来替换它们,比如在华氏温度数据和摄氏温度数据之间转换时,其转换公式是:摄氏温度=(华氏温度-32)*5/9,这时就需要使用计算器根据当前值进行计算,然后输入计算结果。若一个一个地操作,实在是太乏味了,而且极易出错,那么如何处理呢?

在上一节中,我们讲用程序自动选中整个数字,那么这个选中的数字就是我们计算的起点,首先估计选中字符串的值,用给定的公式进行计算,根据指定的数值精度对其进行四舍五入,然后替换掉选中的字符串即可,这些工作由程序来完成是比较容易的,具体方法请参阅CalculateNReplace()过程。

替换文档的特定部分


有时我们不希望对整个文档进行操作,而是对文档中的特定部分进行查找并替换操作。若使用WORD的查找并替换功能,只需要选中特定的文档部分即可。但是对VBA宏程序来说,存在一个小问题:WORD只允许一个文档拥有一个SELECTION对象,当程序在向前或向后扩展选中的数字时,该SELECTION对象即丢失。为了解决这个问题,我们需要创建一个临时文档,将选中的文档部分复制到新创建的文档中,然后对其执行上述的查找并按规则替换数字的功能,执行完毕再将整个文档放到WINDOWS的剪贴板,关闭该文档并回到原文档中,替换掉原文档中的选中部分。具体方法请参阅NewDoc()和ReplaceDoc()两个过程。

估计数学表达式的方法


如果允许用户给输入参数指定一个数值表达式,在使用它们之前需要首先估计它们的值。这需要用到WORD的等式域(FORMULA或=)功能。首先将用户在对话窗体上输入的数值表达式提取出来,创建一个新文档,向文档写入一个相应的等式域来估计该表达式,选中域值文本,将其转换为对应的双精度数值,供程序使用,当所有的表达式都估计结束后,关闭该临时文档即可。具体方法请参见CalculateFormula()过程。这种方法比用程序直接解析数值表达式要来得直接和容易。




相关信息
用VBA突破WORD查找替换功能 (1)
发布者:mmcbbs
浏览量:164
发布日期:2005-04-10 10:27:17
所属专题:
用户评论
称  呼:
内  容:

广告位

广告招租,欢迎抢订

热门信息

·什么是ODBC
·初识WTL(上)
·理解ActiveX控件的一些背景..
·VB.NET 的新特点:变..
·探讨VB.Net中的数据绑定
·用VB.NET打造NameSpace
·VB.NET中的面向对象编程特征
·用VB和MTS开发多层数据库应..

推荐信息