【问题标题】:Replace all then lock the replacing words全部替换然后锁定替换词
【发布时间】:2016-02-23 20:49:57
【问题描述】:

我正在尝试全部替换,然后只锁定替换单词,而不是全部。

例如:

句子:“我要去市场” 查找:“市场” 替换:“学校”

然后,锁定单词“学校”。

Dim Datas(500) As String
Dim CariKata As String

Datas(1) = "Shop"
Datas(2) = "Office"

Selection.WholeStory
Selection.Editors.Add wdEditorEveryone
For h = 1 To 2

CariKata = Datas(h)

    For i = 1 To CountWordPhrase(CariKata)
        Selection.find.ClearFormatting
        Selection.find.Replacement.ClearFormatting
        With Selection.find
            .Text = CariKata
            .Replacement.Text = "school"
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = True
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
            .MatchPhrase = True
        End With
        Selection.find.Execute
        Selection.Editors(wdEditorEveryone).Delete

    Next i



ActiveDocument.Protect Password:="123", NoReset:=False, Type:= _
    wdAllowOnlyReading, UseIRM:=False, EnforceStyleLock:=False


Next h

End Sub

Function CountWordPhrase(ByVal KataDicari As String)

Dim Response, ExitResponse
Dim y As Integer


On Error Resume Next



With ActiveDocument.Content.find
    Do While .Execute(FindText:=KataDicari, Forward:=True, Format:=True, _
       MatchWholeWord:=True) = True

       ' Display message in Word's Status Bar.
       StatusBar = "Word is counting the occurrences of the text " & _
       Chr$(34) & x & Chr$(34) & "."

       y = y + 1
    Loop
End With

结束函数

此脚本成功查找并锁定,但无法查找、替换和锁定。

如何查找、替换、锁定?

【问题讨论】:

  • Word 的哪个版本?

标签: vba ms-word word-2010


【解决方案1】:

在 Word 中保护少量文本可能很棘手。对于 2010,您有两个基本选择:

  1. 使用“只读”保护。这使您可以锁定文档,将某些区域指定为可供选定人员(或“所有人”)编辑。您将在显示任务窗格的“开发人员”选项卡“限制编辑”按钮中找到基本功能。您将选择整个文档并将其标记为可编辑,然后将您更改的范围设置为受保护。

  2. 使用内容控件,设置两个“锁定”复选框。由于我在您的代码中看到了带有 ContentControls 的一行,因此我假设您在一定程度上已经熟悉它们。这种方法的优点是您不需要不断更改文档的保护级别。

在任何一种情况下,您都不能再使用 ReplaceAll。您需要将 Find 放入循环中,并在每次“命中”后执行插入/保护步骤,然后再次循环。互联网上有很多使用 Find 循环的代码示例。搜索:单词查找循环

【讨论】:

  • 根据@Cindy Meister 的回答,我可以创建查找和锁定功能,但我仍然无法创建查找替换和锁定功能。
  • 您可以编辑您的原始问题以包含您现在可以使用的代码吗? (不能替代 - 在最后添加。)我怀疑这将是一个小小的改变。例如 Selection.Text = "replace term" 在您创建内容控件之前或 ContentControl.Range.Text 在您锁定内容控件之前。
  • 失败了。我一直在到处放它,但没有用。
  • 尝试像这样更改以下行:Selection.find.Execute Replace:=wdReplaceOne
  • 在建议之前,最好自己尝试一下你的建议,这样你就可以确定它是否运行。
猜你喜欢
  • 2019-12-19
  • 2014-06-17
  • 1970-01-01
  • 2010-10-22
  • 1970-01-01
  • 2010-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多