ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

向尊敬的守柔求助,Word表格问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-4-23 16:14 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

尊敬的守柔版主,看了你的几篇大作,觉得你高深莫测。我也想向VBA进军,所以有难题请教。同样是类似批改作业的问题,不过是有关表格的批改。上传三个word文档:①表格题目②表格正确答案③表格错误答案。能否帮忙用VBA编程,对②表格正确答案③表格错误答案进行批改,其反馈信息仍存放于原文档中。

在百忙之中赐教,真的非常感谢。

CU5d8BYS.rar (11.08 KB, 下载次数: 23)

TA的精华主题

TA的得分主题

发表于 2005-4-24 20:54 | 显示全部楼层

这个问题很不错,我也想知道。

TA的精华主题

TA的得分主题

发表于 2005-4-25 14:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
最好是在VB中用VBA编程,这个更方便

TA的精华主题

TA的得分主题

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

最近搞了类似的东东,感觉很不舒畅,主要是累,为什么?因为这只是格式的反复比较与循环,不是难,而是繁。加之近期事务又多,所以给搁下了。

烦请楼主宽限几天,等我调整一下,争取完成吧。

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-4-26 08:53 | 显示全部楼层
非常感谢守柔能回复,说明问题已在考虑中。我也知道编程的辛苦,能体谅守柔的苦衷。好了,进一步期待好消息吧。

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-4-26 10:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
不是超人的智慧难以完成。编程这个东东

TA的精华主题

TA的得分主题

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

守柔版主这么早就起床工作并为大伙解答疑问呀!

真是让人敬佩呀!

敬爱的守柔版主,您是一颗闪亮的明星,为我们指引着知识和光明之路!

赞一个!同时也提醒守柔朋友平时要多注意休息,毕竟身体最重要哟!

TA的精华主题

TA的得分主题

发表于 2005-4-27 05:46 | 显示全部楼层

i30jCVg1.rar (14.07 KB, 下载次数: 18)

多余的话,我不多话了,可以参考我的另一个比较程序中的一些说明。

可以运行 COMPARECELLSFORAMT命令。

注意:电脑与人脑的不同,导致表格比较来得非常麻烦,每个单元格的四个边框线逐一比对,很累,也很耗资源,需要时间,请耐心等待。

有问题,可以再作交流

以下代码供参考:

'* +++++++++++++++++++++++++++++ '* Created By I Love You_Word!@ExcelHome 2005-4-27 5:44:00 '仅测试于System: Windows NT Word: 10.0 Language: 2052 '^The Code CopyIn [ThisDocument-ThisDocument]^' '* -----------------------------

Option Explicit Sub CompareCellsFormat() Dim aCell As Cell, i As Byte, MyDialog As FileDialog, vrtSelectedItem As Variant, aDoc As Document Dim ErrorText As String, ThatTable As Table, Rid As Integer, Cid As Integer, ThatCell As Cell On Error Resume Next '忽略错误 Set MyDialog = Application.FileDialog(msoFileDialogFilePicker) With MyDialog .Filters.Clear '清除所有文件筛选器中的项目 .Filters.Add "所有 WORD 文件", "*.doc", 1 '增加筛选器的项目为所有WORD文件 .AllowMultiSelect = True '允许多项选择,可用SHIFT/CTRL进行选定 End With If MyDialog.Show = -1 Then '确定 For Each vrtSelectedItem In MyDialog.SelectedItems '在所有选取项目中循环 '以隐藏方式打开指定文件夹中的文档 Set aDoc = Documents.Open(FileName:=vrtSelectedItem, Visible:=False) '判断表格数量,如果不为1个表格,则提示后退出程序 If aDoc.Tables.Count <> 1 Then MsgBox "Word没有找到表格!", vbExclamation: Exit Sub '定义一个表格对象,为被比较文档的第一个表格 Set ThatTable = aDoc.Tables(1) ErrorText = "" '初始化变量 With ThisDocument '本文档(正确答案,标准文档) '比较本文档与被比文档的表格总行数 If .Tables(1).Rows.Count <> ThatTable.Rows.Count Then ErrorText = "表格行数不同" & vbCrLf '比较本文档与被比文档的表格总列数 If .Tables(1).Columns.Count <> ThatTable.Columns.Count Then ErrorText = "表格宽数不同" & vbCrLf '比较本文档与被比文档的单元格总数 If .Tables(1).Range.Cells.Count <> ThatTable.Range.Cells.Count Then ErrorText = "表格单元格总数不同" & vbCrLf '如果出现以上任意三种情况其ERRORTEXT不为空,则提示后退出程序 If ErrorText <> "" Then MsgBox ErrorText, vbExclamation: Exit Sub '比较表格中的插入域数量是否相同 If .Tables(1).Range.Fields.Count <> ThatTable.Range.Fields.Count Then ErrorText = ErrorText & "表格中插入域数量不同" & vbCrLf Application.ScreenUpdating = False '关闭屏幕更新 '遍历本文档中的单元格 For Each aCell In ThisDocument.Tables(1).Range.Cells With aCell Rid = .RowIndex '取得行号 Cid = .ColumnIndex '取得列号 Set ThatCell = ThatTable.Cell(Rid, Cid) '定义一个相同位置的单元格对象 For i = 1 To 4 '在四条边框线上取得不同的对象属性 If .Borders(-i).LineStyle <> ThatCell.Borders(-i).LineStyle Then ErrorText = ErrorText & "单元格(" & Rid & "," & Cid & ")边框线型不同" & vbCrLf If .Borders(-i).LineWidth <> ThatCell.Borders(-i).LineWidth Then ErrorText = ErrorText & "单元格(" & Rid & "," & Cid & ")边框线宽不同" & vbCrLf If .Borders(-i).Color <> ThatCell.Borders(-i).Color Then ErrorText = ErrorText & "单元格(" & Rid & "," & Cid & ")边框线颜色不同" & vbCrLf Next '比较两者的文本内容(包括域文本) If .Range.Text <> ThatCell.Range.Text Then ErrorText = ErrorText & "单元格(" & Rid & "," & Cid & ")文本内容不同" & vbCrLf '比较两者的段落水平位置 If .Range.ParagraphFormat.Alignment <> ThatCell.Range.Paragraphs.Alignment Then ErrorText = ErrorText & "单元格(" & Rid & "," & Cid & ")段落格式不同" & vbCrLf '比较两者的段落行间距 If .Range.ParagraphFormat.LineSpacing <> ThatCell.Range.ParagraphFormat.LineSpacing Then ErrorText = ErrorText & "单元格(" & Rid & "," & Cid & ")段落行距不同" & vbCrLf '比较两者的RANGE格式(字体,颜色,字号等) If .Range.Duplicate <> ThatCell.Range.Duplicate Then ErrorText = ErrorText & "单元格(" & Rid & "," & Cid & ")文字格式不同" & vbCrLf '比较两者的底纹 If .Shading.BackgroundPatternColor <> ThatCell.Shading.BackgroundPatternColor Then ErrorText = ErrorText & "单元格(" & Rid & "," & Cid & ")底纹格式不同" & vbCrLf '比较两者的单元格垂直位置 If .VerticalAlignment <> ThatCell.VerticalAlignment Then ErrorText = ErrorText & "单元格(" & Rid & "," & Cid & ")垂直对齐方式不同" & vbCrLf End With Next aCell End With aDoc.Content.InsertAfter vbCrLf & ErrorText '插入指定的比较结果 aDoc.Close True '保存并退出 Next vrtSelectedItem End If Application.ScreenUpdating = True '恢复屏幕更新 '提示结束 MsgBox "表格比较结束,请您核对!", vbInformation + vbOKOnly End Sub '----------------------

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-4-27 07:53 | 显示全部楼层
非常感谢。美丽温柔的守柔熬夜为我编程好感动哦。你是世界上最好最漂亮的版主,最懂得体贴别人的心。愿为你效劳。

TA的精华主题

TA的得分主题

发表于 2005-4-27 10:17 | 显示全部楼层
以下是引用moon929在2005-4-27 7:53:00的发言: 非常感谢。美丽温柔的守柔熬夜为我编程好感动哦。你是世界上最好最漂亮的版主,最懂得体贴别人的心。愿为你效劳。
呵,守柔是个大伙子,不是小姑娘,这“美丽温柔”说的也未免太肉麻了。呵呵。
[此贴子已经被作者于2005-4-27 10:17:15编辑过]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-14 15:10 , Processed in 0.036972 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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