Vba 从选择中删除高亮显示
我有一个脚本,如果我从VBA编辑器启动它,它就会运行,但如果我直接从Word启动它,它就不会运行 该脚本定义Word文档中的首字母缩略词。在Word文件出现之前,它要经过一级编辑,编辑器会突出显示术语。因为我的脚本也使用高亮显示,所以我让它用彩色文本替换现有的高亮显示Vba 从选择中删除高亮显示,vba,ms-word,Vba,Ms Word,我有一个脚本,如果我从VBA编辑器启动它,它就会运行,但如果我直接从Word启动它,它就不会运行 该脚本定义Word文档中的首字母缩略词。在Word文件出现之前,它要经过一级编辑,编辑器会突出显示术语。因为我的脚本也使用高亮显示,所以我让它用彩色文本替换现有的高亮显示 'Turn track changes off, replace yellow highlighting from FLEs with colored text to avoid confusion between 'FLE hi
'Turn track changes off, replace yellow highlighting from FLEs with colored text to avoid confusion between
'FLE highlighting and acronym defininer highlighting
ActiveDocument.TrackRevisions = False
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Highlight = True
With .Replacement
.Highlight = False
.Font.Color = RGB(155, 187, 89)
End With
.Execute Replace:=wdReplaceAll, Wrap:=wdFindStop
End With
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
当我从Word运行脚本时,它跳过了整个代码块。其他一切都正常工作,但第一级编辑的高亮显示仍然存在
当我从VBA编辑器运行时,一切都按预期运行
当我进行其他更改时,例如,我只是更新了宏调用的其中一个表单,以添加对绿色文本的解释,无论我从何处开始脚本,它们都会通过
下面是整个脚本
选项显式
作为字符串的公共定义5
次缩略词定义者
'定义工作簿和工作表,打开Excel
Dim xlApp作为Excel.Application
将xlWbk设置为工作簿
Dim FN作为字符串:FN=C:\Users\&Environ$Username&\AppData\Roaming\Gartner\AcronymDefiner\AcronymDefiner.xlsx
按长度调整当前行:当前行=2
Set xlApp=New Excel.Application
xlApp.Visible=False
设置xlWbk=xlApp.Workbooks.OpenFN
'确定轨迹更改是打开还是关闭,以便可以在宏结束时返回到原始状态
Dim Track_更改为布尔值
如果ActiveDocument.TrackRevisions=False,则
跟踪更改=错误
如果结束
'更改轨迹更改中的简单视图,以防止在整个宏的搜索中出现删除的文本
使用ActiveWindow.View.RevisionsFilter
.Markup=wdRevisionsMarkupSimple
.View=wdRevisionsViewFinal
以
'关闭轨迹更改,将FLE中的黄色高亮显示替换为彩色文本,以避免两者之间的混淆
“FLE突出显示和首字母缩略词定义突出显示
ActiveDocument.TrackRevisions=False
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
选择。查找
.Highlight=True
替换
.Highlight=False
.Font.Color=RGB15518789
以
。执行Replace:=wdReplaceAll,换行:=wdFindStop
以
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
'开始首字母缩略词定义循环
当当前_行时执行此操作取决于您如何调用宏,一开始可能不存在选择。记住Selection.Find本质上是指在当前选择指定的范围内查找[任何内容]。看到您使用selection.Homekey Unit:=WdStory将所选内容折叠为零,我试图找出代码工作正常但失败的原因。由于某种原因,当选择为0或1时,Word似乎同意搜索整个文档。但是零并不等于零 更好的方法是指定要搜索的范围或选择。无论哪种方式,如果您希望搜索文档的整个正文,它都应该是ActiveDocument.Content。当您的代码基于使用选择对象时,您必须进行这样的选择,例如ActiveDocument.Content.Select
@Slai和我建议不要使用选择对象。改为使用范围对象。了解差异我建议指定范围,而不是使用选择。例如,ActiveDocument.Range而不是Selection感谢您的回复。下一次我有机会做这件事的时候,我会考虑改变一下。因为我经常使用selection.homekey,所以我不得不进行一些重构。我会在那一点上更新。