替换所有然后锁定替换单词

时间:2015-11-21 10:45:57

标签: word-vba word-2010

我试图替换所有,然后只锁定替换单词,而不是全部。

例如:

句子:“我要上市” 发现:“市场” 替换:“学校”

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

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

结束功能

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

如何查找,替换和锁定?

1 个答案:

答案 0 :(得分:0)

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

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

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

  3. 在任何一种情况下,您都不能再使用ReplaceAll。您需要将“查找”置于循环中,并在每次"点击"之后,执行插入/保护步骤,然后再次循环。 Internet上有很多代码示例用于循环使用Find。搜索:单词查找循环