`
congjl2002
  • 浏览: 211086 次
  • 性别: Icon_minigender_1
  • 来自: 辽宁
社区版块
存档分类
最新评论

Java程序员的第一个VBA程序

阅读更多

前言

受同事的委托,要我帮忙做一个将word批注提取出来导入到Excel中的工具

以前听说过office有VBA,宏之类的东西,而且和VB相似(本人以前做过简单的VB开发,但基本都忘没了),就答应了下来

经过一番苦战,终于完成了,回头看一下自己走过来的路,发现又学到很多东西,同时发现了一片新大陆,在Microsoft Office\OFFICE11\2052路径下,有VBA API的文档,而且是装了office以后自带的,这些宝贝在那待了那么长时间浪费啦。接下来我就说一下这次的开发过程吧,也算是一个小的总结。

需求开发

对于自己不了解的东西,到网上搜索就没有错了

在baidu里搜了一下“word 批注 excel”,还真有现成的代码,本着拿来主义,将代码拷贝到了excel的编辑器中,将文件路径这类的东西改了一下,运行!别说,还真好用。于是就拿去向同事交差。把网上的东西直接拿来就用当然不能满足同事的要求,于是同事又提了一大堆需求(同事也算是客户了,要求也算是需求),比如要可以在弹出的浏览窗口选择文件;不光要显示批注,还要显示批注的人和批注的章节位置;要可以导出到她(当然是她了)提供的统计模板里等等。

既然大框已经有了,接下来就是在基础上继续的完善了,我们接下来就一个一个来吧。

解题思路

弹出选择文件的提示框,又是网上一顿搜,结果搜来的都是打开文件夹的,郁闷,看来得自己动手了。

网上找的:Set fd = Application.FileDialog(msoFileDialogFolderPicker)
但只能打开文件夹,据我对VB的了解,两者应该是在方法中的参数上有所区别,经过再一的查找,终于找到了,将上述代码改为:Set fd = Application.FileDialog(msoFileDialogOpen)。嘿嘿,稍作修改以后,成功。

批注的内容和人很容易,直接在对象的后面点就能点出属性来,于是我迅速的添加上该功能并迫不及待的运行起来。结果出来后我发现问题了,批注的作何和批注人都可以得到,但是批注的位置却没有属性能能够得到。

其实,这部分也是这次开发最耗费时间的部分,我自己些的代码基本上都是在这部分了(不知道为什么网上竟然没有这部分的代码)。

这个时候的思维方向我认为是很重要的,要是走错了路,在往回走就更困难了,但没准也是个捷径,不知道了,反正我是按如下方式思考的:

要求搜索的是批注所在的章节号,章节是样式的一种,记得word中有可以搜索样式的功能,具体怎么操作就还的上网查了,这个通用的查找功能当然很容易找到,也有说用宏来录制一段看代码的,我就两种方式都试验了一下,最后得到了如下代码:

          With appword.Selection.Find
                  .Style = appword.ActiveDocument.Styles("标题 1")
                  .Forward = False
                  .Wrap = wdFindStop
                  .MatchByte = True
          End With

这里我采用的是从批注位置向上查找的方法,原因当然是批注所在段落的标题一定在批注的上面啦,“哎,这个你咋还给我们解释呢,上火”。别急,下面就是我解释的原因了,查找的时候大家可能都遇到过这种情况,比如字符串“aaabbb”,我想查找“ab”,但是关键是我现在鼠标的位置就是在“ab”这个字符串的中间,这样,查找的结果就是找不到字符串“ab”。我举这个例子就是说,当你在标题中打上批注的话,他找到的就是上一个章节的标题,这样错误就严重了,不是有那么一句名言吗“没有总比错误好”。对啊,告诉人家错了地方,还不如直接就说不知道。找到问题了,接下来就让我们来解决这个问题,还是按我们的方式,先想想和我们以前知识的积累有没有想关联的,必经我们已经搞了1年多的计算机了。

其实想想也很好解决,只要让光标焦点移到字符串的后面,就可以查到所要查找的位置了,接下来的关键就是在word里用vba怎么定制光标的位置。信息多了还真就是个麻烦事,在网上搜了很长时间,才找到一篇非常理想的文章,当然对于这么来之不易的文章我当然要搜藏了,在我前几篇文章里有全文的转帖。既然解决了,当然通过.selection就可以获得查到的标题了。这里还有一个问题,就是如何判断标题的级别,比如我要是批注了第二段,怎么能确定上一级标题就是“标题 1”呢,我想了一个很土的办法就是判断标题所在的行数,每次都查出来3级的标题,然后在比较他们行号的大小,将最大行号的标题作为最后显示的标题。恩,标题问题到这基本就完成了,再执行一下程序,完事?还是差了那么一点点,执行的结果中发现,标题只有标题的内容,没有标题的编号,这可不好办啊,接下来我们就来解决编号问题。见代码中文件。

问题都解决了,最后当然要用同事给的模板试一下了,结果发现,在插入行的时候并没有增加,而是将下面的行给覆盖了,这个也不难解决,录一小段宏看看,呵呵,代码都放在那了,就等你去取了。所有东西都结束了,最后是要在执行一下格式刷,将格式整理一下,大功告成。

 

  • 提取word批注_试用版.rar (29.3 KB)
  • 描述: VBA编写的读取word中批注小工具,很高兴很多朋友喜欢,公开代码了,密码:123
  • 下载次数: 162
分享到:
评论
12 楼 congjl2002 2012-11-19  
niuzk 写道
我在office 2003下运行楼主的Excel表,结果提示
编译错误:用户定义类型未定义。
我对VB一窍不通,不知道怎么解决。
另外,在网上找了很多的VB,却没有一个成功的。
请楼主指点。

你好,网上有很多方法解决,请参考以下链接:
http://wenku.baidu.com/view/2d237bec551810a6f5248636.html

删除以下目录中的内容,即可执行:
删除“C:\Users\shourou\AppData\Roaming\Microsoft\Forms”下的所有下的所有EXD文件; 删除“C:\Users\用户名\AppData\Local\Temp\VBE”下的所有EXD文件;
11 楼 niuzk 2011-12-09  
我在office 2003下运行楼主的Excel表,结果提示
编译错误:用户定义类型未定义。
我对VB一窍不通,不知道怎么解决。
另外,在网上找了很多的VB,却没有一个成功的。
请楼主指点。
10 楼 chogo 2010-10-21  
chogo 写道
非常感谢分享代码,最近我也在处理同样的问题~


呃,看代码的时候要求输入密码,请问能否把密码发给我,让我学习一下?
chogo@126.com
9 楼 chogo 2010-10-21  
非常感谢分享代码,最近我也在处理同样的问题~
8 楼 congjl2002 2010-05-29  
没有密码了,完全开源了
7 楼 xiang 2010-01-11  
忘记告诉楼主我的联系方式了:直接在JE网站里给我发消息!
6 楼 xiang 2010-01-11  
正在做把word的批注保存到数据库的程序,找到了楼主这篇文章,非常有借鉴意义!


请楼主给我发个邮件,告诉一下密码,谢谢了!!
5 楼 congjl2002 2009-02-28  
设置了密码,可以给我发信息索取,免费的
4 楼 congjl2002 2008-05-20  
由于是业余时间编写,而且对VBA的了解有限,因此有如下一些问题,希望大家可以和我一起完善
具有的功能:
1.从鼠标选择的excel格开始导入
2.可以列出批注的章节号,批注人,批注范围等信息
存在的问题:
1.如果打开word后点击取消,则再次打开该文档时,提示word已经被占用,可以在进程中关闭word的进程即可
2.最后没有做自动格式化处理,因此,导入时使用的格式其实是鼠标所在小格上面一行的格式,不过最后用格式刷刷一下就可以可

大家有什么更好的意见和建议,请给我留言,谢谢
3 楼 littmount 2008-04-16  
我也是在处理同样的问题,确实是其他的都比较好处理,但是这个批注所在的章节不好获取,能共享一下代码吗,谢谢!david.xuhg@gmail.com
2 楼 congjl2002 2008-03-12  
很抱歉,没有接触过这样的技术
1 楼 slivefox 2008-03-08  
你好。我想问一下,你有在jsp页面编辑word文档,并且将word的批注保存到数据库的代码吗。我看了一下,你的水品很高。希望和你交流交流。Email:jack60508065@sohu.com
QQ:34976064

相关推荐

    JAVA程序员简历模板(最新版)

    JAVA程序员简历模板 JAVA程序员简历模板

    Java程序员面试资料及简历模版

    Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历...

    java程序员简历模版

    java程序员简历模版java程序员简历模版java程序员简历模版java程序员简历模版java程序员简历模版java程序员简历模版java程序员简历模版java程序员简历模版java程序员简历模版java程序员简历模版java程序员简历模版...

    java程序员转正ppt

    java程序员转正pptjava程序员转正pptjava程序员转正ppt

    java程序员笔试题java程序员笔试题

    java程序员笔试题java程序员笔试题

    Java程序员面试宝典

    《Java程序员面试宝典》附带1张DVD光盘,内容为《Java程序员面试宝典》所有面试题的多媒体教学视频(共14.5小时)及免费赠送的55小时Java教学视频和5.5小时算法教学视频。授人以鱼,不如授人以渔。《Java程序员面试...

    java程序员面试交流项目经验

    java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流...

    Java程序员面试宝典第一章

    Java程序员面试宝典第一章,Java程序员面试宝典第一章

    java程序员面试必备的32个要点.doc

    java程序员面试必备的32个要点java程序员面试必备的32个要点java程序员面试必备的32个要点java程序员面试必备的32个要点java程序员面试必备的32个要点java程序员面试必备的32个要点java程序员面试必备的32个要点java...

    java程序员面试宝典

    JAVA程序员面试 JAVA程序员面试 JAVA程序员面试 JAVA程序员面试

    Java程序员面试笔试宝典-何昊pdf版

    Java程序员面试笔试宝典-何昊pdf版,高清,带有书签。

    Java程序员职场全攻略

    Java程序员职场全攻略 Java程序员职场全攻略 Java程序员职场全攻略 Java程序员职场全攻略

    java程序员面试题大全

    java程序员面试题java程序员面试题java程序员面试题java程序员面试题java程序员面试题java程序员面试题

    java程序员面试简历 WORD 模版

    java程序员两个简历Word简历模版样试

    Java程序员简历模板-求职应聘必备

    内容概要:该资源是一份优秀的Java程序员简历模板,包含了详细的简历内容和排版样式,适用于Java程序员求职应聘时使用。 适用人群:Java程序员、计算机科学和技术相关专业的学生和毕业生、招聘人员和HR等对Java...

    Java 程序员宝典 pdf 电子书

    Java 程序员宝典 pdf 电子书Java 程序员宝典 pdf 电子书Java 程序员宝典 pdf 电子书

    Java程序员上班那点事

    Java程序员上班那点事 Java程序员上班那点事 Java程序员上班那点事 Java程序员上班那点事

Global site tag (gtag.js) - Google Analytics