ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助]比较两个WORD文件的内容

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-6-25 11:18 | 显示全部楼层 |阅读模式

JeCnaHWW.rar (8.96 KB, 下载次数: 27)

需求:欲将答案和作业两个文档进行比较,将作业中不正确的语句用红色标出。答案中可能有多种解法,作业中有一种解法即视为正确。

现在遇到的问题是:答案中的内容和作业中的内容可能顺序不一样,段落的数目也可能不一样(答案中的段落数目通常多于作业)。这样的话,采用论坛中整篇文档逐字对比的方法显然不行了。

嘿嘿,诸位大虾。不知有没有什么方法能将我从繁琐的批改工作中解救出来?

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-6-25 13:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
哎呀,掉下来了。守柔老大没看到呀。小顶一下了。

TA的精华主题

TA的得分主题

发表于 2005-6-25 13:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

请更改你的作业段落,你是从网页上复制的吧?全是手动换行符,并且大量的前导符,极不规范,恕难以做到。

正确的要求:按照你的第四次作业的段落标记予以区分。

如果确实属于本来就是这种形式的,你也得说明一下。

另外,请将你的批改附上,我需要你的判断结果。

[此贴子已经被作者于2005-6-25 13:10:07编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-6-25 14:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
以下是引用守柔在2005-6-25 13:07:46的发言:

请更改你的作业段落,你是从网页上复制的吧?全是手动换行符,并且大量的前导符,极不规范,恕难以做到。

正确的要求:按照你的第四次作业的段落标记予以区分。

如果确实属于本来就是这种形式的,你也得说明一下。

另外,请将你的批改附上,我需要你的判断结果。

呵呵,衷心感谢守柔老大的回复。作业是电邮里的,我拷出来时忘了改了。马上改了,重新上传!我将前面的空格也删了。

经过我修改后重新上传的作业:

RWLzIF0r.rar (4.36 KB, 下载次数: 19)

呵呵,劳你费心了。

FEf3BuWb.rar

4.01 KB, 下载次数: 24

[求助]比较两个WORD文件的内容

TA的精华主题

TA的得分主题

发表于 2005-6-25 15:05 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
你的段落次序会打乱么?

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-6-25 22:13 | 显示全部楼层
以下是引用守柔在2005-6-25 15:05:03的发言: 你的段落次序会打乱么?
谢谢守柔斑竹,针对某一题,可能段落次序会不同.题所在段落的次序不会打乱的。

TA的精华主题

TA的得分主题

发表于 2005-6-26 06:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

设计思路:

鉴于楼主提供的文档已初具不规范,谁知,一上手设计代码,才知道,其两个文档间的不规范,杂出其间,“惨不忍睹”。因此,我能做的,只有以下的代码,除非楼主规范文档的格式,否则,继续运行是不可能的,因为,你的两个文档,已是人脑都难以分清了,何况电脑!

部分问题,我在代码的注释中,已经写进去了;部分问题,你可以看一下我的附件,这是代码运行的结果,你看一下,很多段落因为两个文档的不同处理方式,导致了WORD判断错误!

我能做的:将所有不规范或者无碍于判断的空格、小圆圈、中文标点、英文标点(你看一下你的两个文档,中英文标点杂出其间!)、序数词后缀与编号等等,不堪入目!

在排除了以上干扰后,电脑依据该段落的净文本在标准文档中,是否存在,如果不存在,则红色显示,反之,不处理。

实际上,如果楼主规范文档要求,则以下代码修改后,置于标准文档的代码窗口中,在指定文件夹下遍历每个作业文档,进行电脑批阅。

以下代码供参考:

'* +++++++++++++++++++++++++++++ '* Created By I Love You_Word!@ExcelHome 2005-6-26 6:16:59 '仅测试于System: Windows NT Word: 10.0 Language: 2052 '^The Code CopyIn [ThisDocument-ThisDocument]^' '* -----------------------------

Option Explicit Sub WorksCompare() Dim StandardDoc As Document, aPara As Paragraph, strApar As String Dim strStandardDoc As String, ChineseInterpunction As Variant, EnglishInterpunction As Variant Dim aArray As Variant, ParLabel As String '你的文档太不规范了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! '先定义一个中文标点数组 ChineseInterpunction = Array(" ", "。", ",", ";", ":", "?", "!", "……", "—", "~", "〔", "〕", "《", "》", "‘", "’", "“", "”") '定义一个英文标点数组 EnglishInterpunction = Array(".", ",", ";", ":", "?", "!", "…", "-", "~", "(", ")", "<", ">", "'", """") '定义一个段首标志字符串 ParLabel = "一二三四五六七八九十1234567890" '定义一个标准文档DOCUMENT对象 Set StandardDoc = Documents("第四次作业答案.doc") '将所有的空格全部去除 strStandardDoc = VBA.Trim(StandardDoc.Content) '对标准文档的字符串进行长达三十多次的循环替换,原因只是相互间标点符号不兼容!!!! For Each aArray In ChineseInterpunction strStandardDoc = VBA.Replace(strStandardDoc, aArray, "") Next For Each aArray In EnglishInterpunction strStandardDoc = VBA.Replace(strStandardDoc, aArray, "") Next Application.ScreenUpdating = False '将作业文档中的带小圈的字符全部替换掉!!!! With ThisDocument.Content.Find .ClearFormatting .Text = " " .Execute replacewith:="", Replace:=wdReplaceAll End With '在遍历作业文档的每一个段落 For Each aPara In ThisDocument.Paragraphs '定义一个段落字符串变量,为去除空格后的段落文本 strApar = VBA.Trim(aPara.Range) '如果不是空白段落 If Len(strApar) > 1 Then '如果其段首字符不是序数词,你看一下,自己的序号,有"、"的有"。"的!!! If VBA.InStr(ParLabel, aPara.Range.Characters.First.Text) = 0 Then '将该段落中的字符串(已除空格),再进行三十多次的循环替换,将其间的标点符号全部去除 For Each aArray In ChineseInterpunction strApar = VBA.Replace(strApar, aArray, "") Next For Each aArray In EnglishInterpunction strApar = VBA.Replace(strApar, aArray, "") Next '所有只有文本的内容,如果在标准文档的字符串中,不存在,则改为红色 If VBA.InStr(strStandardDoc, strApar) = 0 Then ' MsgBox strApar aPara.Range.Font.Color = wdColorRed End If End If End If Next '恢复屏幕更新 Application.ScreenUpdating = True End Sub '---------------------- huYJXtWq.rar (11.07 KB, 下载次数: 45)

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-6-26 11:07 | 显示全部楼层

嘿嘿,真是劳守柔斑竹你费心了,实在是给你添麻烦了啊。如此杂乱的文档,正如你所说,人脑都整昏了,更何况电脑呢?你居然6点钟还在工作,真是佩服之极。你的敬业精神真是我学习的榜样啊。

另外,因为学生自己的关系,所以标点肯定是不标准的,所以,我想的是标点及空格均不作为判断的依据。

千言万语化作一句话,谢谢了啊。

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-6-26 16:21 | 显示全部楼层
呵呵,在上面的代码中没有看到怎样打开作业文档呢?请守柔斑竹指点一下是那条语句呢?

TA的精华主题

TA的得分主题

发表于 2005-6-26 16:27 | 显示全部楼层

这个代码,本来就是请楼主测试用的,以便矫正你的文档与作业文档的差异之处。

此代码正确使用方法:

1:确认WORD/工具/宏/安全性:为低,如果为非低,请设为低后重启WORD

2:打开学生的作业文档,按下ALT+F11,进入VB编辑器,在左侧的工程资源管理器中(如果没有,请在视图/工程资源管理器),找你与作业文档同名的工程,然后双击此工程的"THISDOCUMETN",出现THISDOCUMENT的代码窗口,你将我的代码粘贴于其间

3:打开你的标准文档.

4,激活作业文档(正常WORD模式下,非VB编辑器中),按下ALT+F8,在宏位置中,找到该活动文档名,运行此活动文档中的"WorksCompare"宏,点击运行按钮即可

如有问题,再相告,请注意你的版本号.

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

本版积分规则

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

GMT+8, 2024-11-15 07:50 , Processed in 0.037207 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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