微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 VBA 在 MS Word 中添加或删除评论时是否可以触发某些事件?

如何解决使用 VBA 在 MS Word 中添加或删除评论时是否可以触发某些事件?

在 MS Word 中,当向文本选择添加评论时,如果评论包含一些“关键字”,我想更改此选择的背景颜色。 然后很明显,如果评论删除或不包含“关键字”,我需要将此颜色/突出显示删除到范围文本中。

我设法使用此代码在全局“运行宏”上执行此操作(删除部分除外),但理想情况下,这应该是动态的,并在焦点从注释更改回文档或其他任何内容时激活。

>

这是迄今为止我的代码尝试的简化版本:

'
' ColorComments Macro
'

Dim wdCmt As Comment,cat As String,pg As Paragraph
  
  For Each pg In ActiveDocument.Paragraphs
      
    'Trying to reset the background colors before reapplying the active ones but doesn't work
    pg.Shading.BackgroundPatternColorIndex = 0
  
  Next

  For Each wdCmt In ActiveDocument.Comments

    With wdCmt
          
      If Trim(.Range) = "keyword" Then
                       
        'Probably a better way to change the background color of the text that would give me access to more colors?
        .Scope.Shading.BackgroundPatternColorIndex = 2
          
      Else
      
        'resetting the comment "Scope" color if it doesn't contain the code
        .Scope.Shading.BackgroundPatternColorIndex = 0

      End If

    End With

  Next

End Sub

我想我应该使用公共事件或 WindowsSelectionChange 事件,但我在任何地方都找不到关于它的文档。 我对 VBA 几乎没有经验,所以提前感谢您的帮助:)

解决方法

为了使这项工作有效,您需要从 RibbonUI 重新调整这两个控件的用途:

ReviewNewComment
ReviewDeleteComment

这里有几个关于重新利用 RibbonUI 控件的文章的链接 https://gregmaxey.com/word_tip_pages/repurpose_user_interface_controls.html https://www.experts-exchange.com/articles/21499/Intercepting-Office-Ribbon-Control-Events-with-VBA-using-Repurposing-Commands.html

在以前的 Word 版本中,我不记得看到您尝试使用哪个版本,VBA 解决方案可以访问以下事件例程:

Sub InsertNewComment()
'
' InsertNewComment Macro
' Insert comment (includes menu)
'
End Sub

即使直接从 VBA 调用此例程仍然有效,但在当今版本的 Word 中,RibbonUI 已不再使用此例程。我知道这是因为我尝试使用子例程捕获事件但没有成功。

通过单击 RibbonUI 上的“插入墨迹注释”来调用以下 VBA 例程。

Sub InsertInkComment()
'
' InsertInkComment Macro
' Insert ink comment
'
    Selection.Comments.Add Range:=Selection.Range

End Sub

为什么这个有效而另一个无效,这是一个谜,这就是为什么我事先说你必须设置 RibbonUI 并重新调整其用途,特别是对于常规评论。

至于捕获 Delete Comment 事件,我没有找到 DeleteComment VBA 例程。有用于删除所有评论的事件例程,但没有用于单个评论的事件例程。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。