ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3604|回复: 12

求助:VBA如何判断文档2中少掉的术语?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-6-14 14:54 | 显示全部楼层 |阅读模式
已知两个格式完全一致的WORD文档,其内容也基本相同,只是文档2比文档1略少几条术语。每条术语在文档中均占一段(即都有一个回车符),请问用VBA如何编程才能找出文档2少了哪些术语以及少了多少条术语?
[此贴子已经被作者于2006-6-14 14:56:07编辑过]

TA的精华主题

TA的得分主题

发表于 2006-6-14 15:07 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

crossbrow兄,欢迎你加入本论坛。

请上传附件。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-14 15:42 | 显示全部楼层
感谢孔兄仗义,文档1和2打包示意如附件,诚盼教诲! ag43SKph.rar (3.85 KB, 下载次数: 12)
[此贴子已经被作者于2006-6-14 15:43:19编辑过]

TA的精华主题

TA的得分主题

发表于 2006-6-14 17:29 | 显示全部楼层

复制到文档1下测试。

仅供参考:

Sub 简单的测试()
Dim 文档2 As Document

Dim string2, string1, abstring
Dim arr As Variant, i As Long
Application.ScreenUpdating = False
Set 文档2 = Documents.Open(FileName:=ActiveDocument.Path & "\文档2.doc")
string2 = 文档2.Content
文档2.Close
string1 = ActiveDocument.Content
arr = Split(string1, Chr(13))
For i = 0 To UBound(arr)
If InStr(string2, arr(i)) Then
'不作处理
Else
abstring = abstring + arr(i) + Chr(13)
End If
Next
Application.ScreenUpdating = True
MsgBox abstring, vbOKOnly, "不同的文本是以下"
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-15 11:38 | 显示全部楼层
刚刚试过,程序可以执行,非常感谢孔兄!

TA的精华主题

TA的得分主题

发表于 2006-6-15 12:47 | 显示全部楼层

请教孔兄长篇文档的比对方法

孔兄好!试用之后,很顺手!   小弟现在正想比对Word2007与Word2003的ListCommands“所有命令”列表中的命令,假若Word2003的存于甲文档,Word2007的存于乙文档,要求:自动生成丙文档,丙文档的内容分为两部分,第一部分是Word2003比Word2007多了哪些命令,第二部分是Word2007比2003多了哪些命令。请孔兄帮忙解决!当然,孔兄或许有另外的解决思路,请指点!谢谢孔兄!   注意:两个版本的“所有命令”中都有一些命令因为有多个快捷键而占了多行的,比方说甲文档的第1800-1803行其实是同一个命令。   上传甲乙文档,它们是安装Word后的初始状态下生成的命令列表,已去除空格。 dzvhfJHk.rar (32.61 KB, 下载次数: 9)

TA的精华主题

TA的得分主题

发表于 2006-6-15 13:47 | 显示全部楼层
雨兄甲文档有1800行吗?好像没有啊

TA的精华主题

TA的得分主题

发表于 2006-6-15 14:03 | 显示全部楼层

  Sorry,小弟是想“比方说”,特意用了不存在的1800行,不想竟引起极其认真的孔兄误会,小弟以后不敢乱比方了!

  呵呵,以下是“真比方”——比方说第118、119行都是DocClose。

TA的精华主题

TA的得分主题

发表于 2006-6-15 14:12 | 显示全部楼层

我吓坏了,我以为我看错了。

初想了一下,先用下面的宏,在每个文档运行一下。以得到新的不包括重复的文档。

再在两个文档中分别运行4楼的代码。就可得到他们的差异了。没有细测。何兄。

Sub 取得文档不重复内容()
Dim astring As String
Dim bstring As String
Dim adoc As Document
Dim i As Long
Dim arr
astring = ActiveDocument.Content
arr = Split(astring, Chr(13))
For i = 0 To UBound(arr) - 1
If arr(i) = arr(i + 1) Then
'不作处理,跳过前面的,只要后面的
Else
bstring = bstring + arr(i) + Chr(13)
End If
Next
Set adoc = Documents.Add
adoc.Content = bstring
End Sub

TA的精华主题

TA的得分主题

发表于 2006-6-15 14:58 | 显示全部楼层

  谢谢孔兄的用心!

  时间匆促,未能测用,小弟没猜错的话,孔兄9楼的宏是用来得出甲、乙文档的“副本”,不妨称之为甲2、乙2,甲2中没有命令是重复的,乙2亦然。孔兄的思路很好!

  小弟之所以提出6楼的设想,一则是小弟在试用孔兄4楼的代码时,消息框里无法全部列出不同的命令(估计甲2会比乙2少600个命令),二则是,无法对消息框里的命令进行取用编辑,所以才要求列在丙文档中。

  都是小弟没有说明清楚,害孔兄费了周折!小弟该打!再请孔兄帮忙!

  当然,孔兄9楼的编码对小弟有启示颇大,小弟收藏了,好在其他地方运用——呵呵,其实,孔兄若将两个编码结合,再写出生成丙文档的代码,就可以送小弟到对岸了!再次谢谢孔兄!

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-16 16:40 , Processed in 0.042887 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表