ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] word内容核对

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-4-17 14:42 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
平时工作与公司信息披露有关,需要核对word报告里很多公司名称。肉眼识别经常会出现错误,比如说某某医药营销公司写成了某某医药公司没有发现这种情况。想问一下各位大神有没有什么方法可以实现快速核对识别word某类内容的。万分感谢。

TA的精华主题

TA的得分主题

发表于 2023-4-19 10:49 | 显示全部楼层
如果撰稿人是自己,可以新建模板文档,每次用模板即可;如果是别人拿来的文档需要检查,则可以和 VBA 宏代码来检查。楼主 可提供具体示例附件上来。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-21 11:15 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
413191246se 发表于 2023-4-19 10:49
如果撰稿人是自己,可以新建模板文档,每次用模板即可;如果是别人拿来的文档需要检查,则可以和 VBA 宏代 ...

我手里一般有准确的公司名称,然后需要核对别人给我的word中的公司名称是否正确。现在一直是采用肉眼一个一个核对的方式,想问一下有没有什么简便一点的方法核对。我上传了案例文件,excel是我手中会有的准确公司名称,word是可能会存在问题的公司名称,怎么通过vba实现自动化核对呢。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-21 11:16 | 显示全部楼层
上传了案例文件

案例.rar

20.03 KB, 下载次数: 21

TA的精华主题

TA的得分主题

发表于 2023-4-21 11:51 | 显示全部楼层
这个没办法的。你不清楚对方到底是多了内容还是少了内容。没有规律可循。

TA的精华主题

TA的得分主题

发表于 2023-4-21 14:57 来自手机 | 显示全部楼层
球球是喵喵 发表于 2023-4-21 11:16
上传了案例文件

word中不需要分词?都是顿号(、)分割符吗
如果这样,split然后循环一下excel应该可以的

TA的精华主题

TA的得分主题

发表于 2023-4-22 04:16 | 显示全部楼层
* 楼主,请试用下面的宏。如果频繁使用可设置为热键,比如:F8
* 首先,请 楼主 自行将 Excel 中的所有公司名称复制到新建 Word 文档中,另存为到 D 盘,文件名为“正确公司名称”(因为 Excel 代码我不会,高手老师们会,但他们一般时候不来,我常来)。
* 找到的公司标蓝色,未找到标红色。请按 Alt + F8 打开宏名列表,第一个宏就是本宏。
* 如果代码是在 Word 2019 下面使用,请复制代码后粘贴在 Word 的新建文档中,全选,剪切,再粘贴到 VBE 中,否则,可能有乱码。
  1. Sub a0001_Check_Company_Name()
  2. '检查公司名称:找到蓝色,未找到红色

  3.     Dim arr, i&, j&, s$
  4.    
  5.     Documents.Open FileName:="D:\正确公司名称.docx"
  6.    
  7.     With Selection
  8.         .Tables(1).Select
  9.         .Rows.ConvertToText Separator:=wdSeparateByParagraphs, NestedTables:=True
  10.         .Next.Delete
  11.         i = .Paragraphs.Count
  12.     End With
  13.    
  14.     ReDim arr(0 To i - 1)
  15.    
  16.     For j = 0 To i - 1
  17.         arr(j) = Replace(ActiveDocument.Paragraphs(j + 1).Range.Text, vbCr, "")
  18.     Next
  19.    
  20.     ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
  21.    
  22. '全文查找所有公司名称,标记为红色
  23.     With ActiveDocument
  24.         With .Content
  25.             With .Font
  26.                 .NameFarEast = "宋体"
  27.                 .NameAscii = "Times New Roman"
  28.                 .ColorIndex = wdAuto
  29.             End With
  30.             .InsertBefore Text:=","
  31.         End With
  32.    
  33.         With .Content.Find
  34.             .ClearFormatting
  35.             .Text = "公司"
  36.             .Forward = True
  37.             .MatchWildcards = True
  38.             Do While .Execute
  39.                 With .Parent
  40.                     .Select
  41.                     With Selection
  42.                         Do
  43.                             .MoveStart 1, -1
  44.                         Loop Until .Previous.Text Like "[!一-﨩]"
  45.                         .Font.ColorIndex = wdRed
  46.                     End With
  47.                 End With
  48.             Loop
  49.         End With
  50.    
  51. '全文查找《正确公司名称》文档里面的公司名称,标记为蓝色
  52.         For j = 0 To i - 1
  53.             With .Content.Find
  54.                 .ClearFormatting
  55.                 .Text = arr(j)
  56.                 .Forward = True
  57.                 .MatchWildcards = True
  58.                 Do While .Execute
  59.                     With .Parent
  60.                         .Font.Color = wdColorBlue
  61.                     End With
  62.                 Loop
  63.             End With
  64.         Next
  65.         
  66.         .Characters.First.Delete
  67.    
  68. '附加功能:全文查找红色文字(未找到的公司名称)并放到文首
  69.         With .Content.Find
  70.             .ClearFormatting
  71.             .Font.ColorIndex = wdRed
  72.             .Forward = True
  73.             .MatchWildcards = True
  74.             Do While .Execute
  75.                 With .Parent
  76.                     .Select
  77.                     Selection.MoveEnd
  78.                     s = s & Selection.Text
  79.                     
  80.                     Selection.Cut
  81.                 End With
  82.             Loop
  83.         End With
  84.         
  85.         .Content.InsertBefore Text:=s & vbCr & vbCr

  86.         With .Content.Find
  87.             .ClearFormatting
  88.             .Text = "^p^p"
  89.             .Forward = True
  90.             .MatchWildcards = False
  91.             Do While .Execute
  92.                 .Parent.Select
  93.                 Exit Do
  94.             Loop
  95.         End With
  96.    
  97.         With Selection
  98.             .HomeKey 6, 1
  99.             .Font.ColorIndex = wdRed
  100.             .Find.Execute "(公司)?", , , 1, , , , , , "\1^p", 2
  101.             .HomeKey 6
  102.         End With
  103.    
  104.         .Content.InsertBefore Text:="未找到的公司:" & vbCr
  105.         
  106.         With .Paragraphs(1).Range.Font
  107.             .Name = "黑体"
  108.             .Bold = True
  109.             .Underline = wdUnderlineDouble
  110.         End With
  111.     End With
  112.     MsgBox "处理完毕!!!", 0 + 48
  113. End Sub
复制代码

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-4-22 04:24 | 显示全部楼层
* 请每次使用,只须打开被检查文档即可,"正确公司名称"文档无须打开(会自动打开后关闭)。

TA的精华主题

TA的得分主题

发表于 2023-4-23 10:31 | 显示全部楼层
是不是可以先核对公司名称中的关键词,如果匹配上了,就存在这个公司,在进行全名称核对,看看是否完全 一致

TA的精华主题

TA的得分主题

发表于 2023-4-23 17:23 | 显示全部楼层
公司名称纠错

纠错公司名称.7z

21.71 KB, 下载次数: 16

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

本版积分规则

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

GMT+8, 2024-12-27 04:25 , Processed in 0.040062 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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