VBA字宏不跨不同的计算机工作



我组合了一个简单的宏来查找括号内的文本实例并突出显示括号内的所有内容,尽管由于某种原因它在另一台计算机上不起作用:

With Selection.Find
    .ClearFormatting
    .Text = "[texthere*]"
    Options.DefaultHighlightColorIndex = wdYellow
    .Replacement.Highlight = True
    .Replacement.Font.Color = wdColorRed
    .Replacement.Font.Size = 16
    .Replacement.Text = "^13 ^&"
    .Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue
End With

我已经将非工作计算机上的问题隔离为无法识别搜索字符串"/[texthere*/]",因为如果我删除反斜杠和括号并简单地搜索"texthere*",则突出显示操作有效。

首先我检查了安全设置,它们在两台机器上是相同的。接下来,我检查了版本和库。工作的机器是14.4.1,而不能工作的版本是14.4.7,从外观上看,它有点bug——我在网上搜索了很多答案,发现人们在谈论Excel中的"表单控件"问题,这是由14.4.7更新导致的,但我不知道是什么导致了Word的问题。

是否有可能更新使我的Selection.find.Text字符串找不到?
这些库似乎是相同的,但我不知道是否有一种方法可以通过添加库来解决这个问题?
不管怎样,我怎么让它在另一台电脑上也工作呢?

Find设置可以保留以前使用的设置,因此可能非工作计算机应用了不同的默认值。例如,尝试显式设置MatchWildcards值,而不是依赖于现有值。

With Selection.Find
    .ClearFormatting
    .MatchWildcards = True    '<<<<<<<<<<<<<<<<
    .Text = "[texthere*]"
    Options.DefaultHighlightColorIndex = wdYellow
    .Replacement.Highlight = True
    .Replacement.Font.Color = wdColorRed
    .Replacement.Font.Size = 16
    .Replacement.Text = "^13 ^&"
    .Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue
End With

相关内容

最新更新