2015-11-21 4 views
0

Я пытаюсь заменить все, а затем заблокировать только слова замены, а не все.Замените все блокировки замещающих слов

Например:

Приговор: "Я иду на рынок" поиск: "рынок" Заменить: "школа"

Затем замок слово "школа".

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 

End Function

Этот сценарий успешно найти и замок, но он не может найти, заменить и замок.

Как найти, заменить и заблокировать?

+0

Какая версия Word? –

+0

Microsoft Word 2010 –

ответ

0

Защита небольших фрагментов текста в Word может быть сложной задачей. С 2010 года у вас есть два основных варианта:

  1. Использовать защиту только для чтения. Это позволяет заблокировать документ, указав определенные области как редактируемые для выбранных людей (или «Все»). Вы найдете основные функциональные возможности на вкладке «Разработчик», кнопка «Ограничить редактирование», которая отображает панель задач. Вы должны выбрать и пометить весь документ как редактируемый, а затем установить диапазоны, которые вы измените, как защищенные.

  2. Используйте элементы управления содержимым, установив флажки «Блокировка». Поскольку я вижу строку с ContentControls в вашем коде, я предполагаю, что вы уже знакомы с ними, в определенной степени. Преимущество такого подхода заключается в том, что вам не нужно постоянно менять уровень защиты на документе.

В любом случае вы больше не можете использовать ReplaceAll. Вам нужно будет поместить «Найти в петлю» и после каждого «удара» выполнить шаг вставки/защиты, а затем снова зациклиться. В Интернете есть множество примеров кода для циклического поиска с помощью Find. Поиск: Word Find Loop

+0

Основываясь на ответе @Cindy Meister, я могу сделать функцию поиска и блокировки, но я все еще не могу выполнить функцию find-replace-and-lock. –

+0

Можете ли вы изменить исходный вопрос, чтобы включить код, который вы сейчас работаете? (НЕ подпишитесь - добавьте его в конце.) Я подозреваю, что это будет вопрос небольшого изменения. Например, Selection.Text = «заменить термин», прежде чем создавать элемент управления содержимым или ContentControl.Range.Text перед блокировкой элемента управления содержимым. –

+0

Не удалось. Я играл вокруг, размещая его здесь и там, но это не сработало. –

Смежные вопросы