ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] word合并批注到一个文档,如何准确定位到批注引用位置?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-6-9 16:45 | 显示全部楼层 |阅读模式
  1. Sub addCm(fn,newn)

  2. Set wdApp = CreateObject("word.application")
  3. On Error Resume Next
  4. Set myWDoc = wdApp.Documents.Open(Chr(34)&fn&Chr(34))
  5. wdApp.Visible = false

  6. wdApp.ScreenUpdating = False
  7. rows = myWDoc.Comments.Count
  8. If rows = 0 Then
  9. myWDoc.Close
  10. Exit Sub
  11. End If

  12. ReDim commentsArray(rows, 5)
  13. For i = 1 To rows
  14. commentsArray(i, 1) = myWDoc.Comments(i).Scope.Information(3) '页码
  15. commentsArray(i, 2) = myWDoc.Comments(i).Scope.Information(10) '行号
  16. commentsArray(i, 3) = myWDoc.Comments(i).Scope '批注引用内容
  17. commentsArray(i, 4) = myWDoc.Comments(i).Range '批注内容
  18. commentsArray(i, 5) = myWDoc.Comments(i).Author '作者
  19. Next

  20. myWDoc.Close
  21. Set myWDoc = Nothing
  22. Set myWDoc = wdApp.Documents.Open(Chr(34)&newn&Chr(34))
  23. myWDoc.Activate

  24. For i = 1 To rows
  25. wdApp.Selection.GoTo 1, 1, commentsArray(i, 1)
  26. wdApp.Selection.GoTo 3, 2, commentsArray(i, 2)-1

  27. wdApp.Selection.Find.ClearFormatting
  28. With wdApp.Selection.Find
  29. .Text = commentsArray(i, 3)
  30. .Replacement.Text = ""
  31. .Forward = True
  32. .Wrap = wdFindAsk
  33. .Wrap = wdFindContinue
  34. .Format = False
  35. .MatchCase = False
  36. .MatchWholeWord = False
  37. .MatchKashida = False
  38. .MatchDiacritics = False
  39. .MatchAlefHamza = False
  40. .MatchControl = False
  41. .MatchByte = True
  42. .MatchWildcards = False
  43. .MatchSoundsLike = False
  44. .MatchAllWordForms = False
  45. End With
  46. wdApp.Selection.Find.Execute
  47. Set myRange = wdApp.Selection.Range
  48. wdApp.Selection.Comments.Add myRange,commentsArray(i, 4)
  49. Next

  50. wdApp.ScreenUpdating = True
  51. myWDoc.Save
  52. myWDoc.Close
  53. wdApp.Quit
  54. End Sub
复制代码
本意:合并多个word文档的批注到一个word文档中,目前存在的问题是:
通过获取批注的页码和行号,在包含表格的页上获取的行号,再使用 goto 方法定位行时出错,他们从上往下数的行数不一致;导致定位不准;
commentsArray(i, 1) = myWDoc.Comments(i).Scope.Information(3)   '页码
commentsArray(i, 2) = myWDoc.Comments(i).Scope.Information(10)    '行号

请问怎样准确定位到批注位置,便于查找并合并批注;
详细代码和素材见附件!

word_test.rar

490.66 KB, 下载次数: 13

代码和素材

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

本版积分规则

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

GMT+8, 2025-1-16 02:35 , Processed in 0.019103 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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