Vba 宏在Word文档中的选定文本中插入关键字注释?

Vba 宏在Word文档中的选定文本中插入关键字注释?,vba,macros,ms-word,Vba,Macros,Ms Word,我是VBA新手,非常感谢您在某个问题上给予我帮助 我有很长的Word文档,在这些文档中,我需要对同一组关键字应用标准注释,但仅限于文档的选定部分。以下宏用于查找关键字并应用注释(来自此处的问题): 这两项修改是: 1) 仅将注释应用于用户选择的文本,而不是整个文档。我尝试了一种“With Selection.Range.Find”的方法,但我不认为可以通过这种方式添加注释(?) 2) 对所选文本中的20多个关键字重复此操作。这些关键词并非完全标准,它们的名称有P_1HAI10、P_1HAI20、

我是VBA新手,非常感谢您在某个问题上给予我帮助

我有很长的Word文档,在这些文档中,我需要对同一组关键字应用标准注释,但仅限于文档的选定部分。以下宏用于查找关键字并应用注释(来自此处的问题):

这两项修改是:

1) 仅将注释应用于用户选择的文本,而不是整个文档。我尝试了一种“With Selection.Range.Find”的方法,但我不认为可以通过这种方式添加注释(?)

2) 对所选文本中的20多个关键字重复此操作。这些关键词并非完全标准,它们的名称有P_1HAI10、P_1HAI20、P_2HAI60、P_HFS10等

编辑:我曾尝试组合类似问题(和)的代码,但我当前的尝试(如下)仅针对第一个关键字和注释,并覆盖整个文档,而不仅仅是我突出显示/选择的文本

Sub label_items()
'
' label_items Macro
'
Dim selbkup As range
Set selbkup = ActiveDocument.range(Selection.range.Start, Selection.range.End)

Set range = selbkup

Do While range.Find.Execute("keyword 1") = True
    ActiveDocument.Comments.Add range, "comment for keyword 1"
Loop

Set range = selbkup

Do While range.Find.Execute("keyword 2") = True
    ActiveDocument.Comments.Add range, "comment for keyword 2"
Loop

'I would repeat this process for all of my keywords

End Sub

我已经梳理了以前的问题和Office开发中心,我被卡住了。非常感谢您的帮助/指导

只需添加一个循环,以及
查找下一个关键字的方法。下面的代码示例中有一些建议,因此请根据需要进行调整以满足您的需求

选项显式
子标签_项()
将myDoc设置为文档
变暗目标范围作为范围
设置myDoc=ActiveDocument
设置targetRange=Selection.Range
'---放置书签以将光标返回到其原始位置
Const RETURN\u BM=“OrigCursorLoc”
myDoc.Bookmarks.Add Name:=RETURN\u BM,Range:=Selection.Range
“---如果未选择任何内容,则搜索整个文档
如果Selection.Start=Selection.End,则
Selection.Start=0
targetRange.Start=0
targetRange.End=myDoc.Range.End
如果结束
“---生成要搜索的关键字列表
Dim keywords()作为字符串
关键字=拆分(“SMS、HTTP、SMTP”、“、”、vbTextCompare)
“---搜索用户选择范围内的所有关键字
我想我会坚持多久
对于i=0到UBound(关键字)
'---将光标设置回屏幕的开头
'最初选定的范围
Selection.GoTo What:=wdGoToBookmark,Name:=RETURN\u BM
做
选择。查找
.Forward=True
.Wrap=wdFindStop
.Text=关键字(i)
.执行
如果。找到了
如果(Selection.Start
谢谢你,皮特!这很有效。我没有使用“if nothing selected”(如果没有选择)这一块,并调整了注释文本的生成方式,但除此之外,这确实完成了工作。非常感谢!
Sub label_items()
'
' label_items Macro
'
Dim selbkup As range
Set selbkup = ActiveDocument.range(Selection.range.Start, Selection.range.End)

Set range = selbkup

Do While range.Find.Execute("keyword 1") = True
    ActiveDocument.Comments.Add range, "comment for keyword 1"
Loop

Set range = selbkup

Do While range.Find.Execute("keyword 2") = True
    ActiveDocument.Comments.Add range, "comment for keyword 2"
Loop

'I would repeat this process for all of my keywords

End Sub