1

Тема: Find and Replase в колонтитулах

Hi
Пытаюсь произвести Find and Replase во всем документе в Word2007.
Сама функция из меню Edit - работает с колонтитулами во всем докумнте.
Но записанный макрос - замену в колонтитулах не выполняет !!!!
Сам макрос:
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "{111}"
        .Replacement.Text = "111"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll

Поискав в нете я понял что колонтитулы надо перебрать, или нет???
Подскажите как??
В этом деле я новичек,

2

Re: Find and Replase в колонтитулах

Перейди в колонтитул и запусти этот макрос

Лучше день потерять — потом за пять минут долететь!

3

Re: Find and Replase в колонтитулах

viter.alex пишет:

Перейди в колонтитул и запусти этот макрос

Смешно big_smile

Вообще у меня внешнее ПО по ActiveX заполняет шаблон в Word. Поэтому перейти может только само ПО.
может подскажеш макрос??

И еще один вопрос можно ли при заполнении шаблона отключить возможность пользовательского ввода(что бы user мышкой не нащелкал когда не надо )

4

Re: Find and Replase в колонтитулах

Ничего смешного не вижу: перейти в колонтитул можно с помощью SeekView, только нужно указать в какой именно колонтитул.
А чтобы пользователь не тыкал куда не нужно, поставь Application.Visible=False

Лучше день потерять — потом за пять минут долететь!

5

Re: Find and Replase в колонтитулах

viter.alex пишет:

Ничего смешного не вижу: перейти в колонтитул можно с помощью SeekView, только нужно указать в какой именно колонтитул.
А чтобы пользователь не тыкал куда не нужно, поставь Application.Visible=False

Шаблон состовляется самим юзером поэтому заранее сказать какой именно колонтитул нельзя
User должен видеть как заполняется шаблон.

6

Re: Find and Replase в колонтитулах

Для эксперимента создай документ с несколькими страницами, задай разные колонтитулы для первой и чётной и нечётной страниц и запусти макрос.

Sub EnumHeadersFooters()
  Dim oSec As Section
  Dim oHF As HeaderFooter
  For Each oSec In ActiveDocument.Sections
    For Each oHF In oSec.Headers
      Select Case oHF.Index
        Case wdHeaderFooterFirstPage
          oHF.Range.InsertAfter "Верхний колонтитул первой страницы раздела " & oSec.Index
        Case wdHeaderFooterEvenPages
          oHF.Range.InsertAfter "Верхний колонтитул чётных страниц раздела " & oSec.Index
        Case wdHeaderFooterPrimary
          oHF.Range.InsertAfter "Верхний колонтитул остальных страниц раздела " & oSec.Index
      End Select
    Next
    For Each oHF In oSec.Footers
      Select Case oHF.Index
        Case wdHeaderFooterFirstPage
          oHF.Range.InsertAfter "Нижний колонтитул первой страницы раздела " & oSec.Index
        Case wdHeaderFooterEvenPages
          oHF.Range.InsertAfter "Нижний колонтитул чётных страниц раздела " & oSec.Index
        Case wdHeaderFooterPrimary
          oHF.Range.InsertAfter "Нижний колонтитул остальных страниц раздела " & oSec.Index
      End Select
    Next
  Next
End Sub

Поскольку каждый колонтитул это Range, то в нём можно вести поиск

Чтобы юзер своими действиями не вмешивался, а только наблюдал, действуй не через Selection, а через Range

Лучше день потерять — потом за пять минут долететь!

7

Re: Find and Replase в колонтитулах

все!
С колонтитулами разобрался - надо перебрать.
Спасибо большое.

Остался вопрос только - запретить ввод ползователя.
Через Range вместо Selection - не получится сделать так как идет заполнение таблицы через здвиг курсора. Если пользователь щелкнет мышкой когда не надо - часть данных из таблицы перескочит в жругое место.
Заполнение таблицы происходит следующим образом - курсор ставиться в первую ячейку (по закладке Bookmark) спускается вниз вставляет цифирку --> здвиг курсора вправо + вставка и тд.

Видел свойство Application.Options.AllowClickAndEditMouse   - по хелпу должно запрещать ввод, но на практике не пашет

8

Re: Find and Replase в колонтитулах

Почему не получится? Приведи код, который заполняет таблицу и я попытаюсь его переделать через Range

Лучше день потерять — потом за пять минут долететь!

9

Re: Find and Replase в колонтитулах

viter.alex пишет:

Почему не получится? Приведи код, который заполняет таблицу и я попытаюсь его переделать через Range

Да код у меня написан на LabView - среда графического програмирования
Поэтому с кодом врядли получиться

Может кто знает как сделать disable Click And Edite????

10

Re: Find and Replase в колонтитулах

MaxEngee пишет:

Hi
Пытаюсь произвести Find and Replase во всем документе в Word2007.
Сама функция из меню Edit - работает с колонтитулами во всем докумнте.
Но записанный макрос - замену в колонтитулах не выполняет !!!!
Сам макрос:
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "{111}"
        .Replacement.Text = "111"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll

Поискав в нете я понял что колонтитулы надо перебрать, или нет???
Подскажите как??
В этом деле я новичек,

О том, как выполнять поиск и замену во всем документе, включая колонтитулы, подробно написано в нашей книге (подробнее о книге см. http://www.russianlocalization.com/mb/ или http://bhv.ru/books/book.php?id=12623):
Б. Клименко, М. Розенберг
Microsoft Word: комфортная работа с помощью макросов. Самоучитель —
СПб.: БХВ-Петербург, 2006.
Поиск в колонтитулах реализован, в частности, в макросе пакетной замены Александра Витера. (http://wordexpert.ru/wp-content/uploads/macros/SrcAndRpl_Beta3.zip)
В комментариях к этому макросу (http://wordexpert.ru/page/makros-paketnoj-zameny-ot-aleksandra-vitera#cut) приведены рекомендации Вождя, относящиеся к перебору "цепочек" (story).

11

Re: Find and Replase в колонтитулах

Как искать в колонтитулах уже понятно

Остался один вопрос -
Может кто знает как сделать disable Click And Edite????

Привожу текст из хелпа:
Word Developer Reference
Options.AllowClickAndTypeMouse Property
True if Click and Type functionality is enabled. Read/write Boolean.
Example
This example checks to determine whether Click and Type functionality is enabled. If it isn't enabled, the example sets this functionality based on the user's choice.
Visual Basic for Applications

If Options.AllowClickAndTypeMouse = False Then
    x = MsgBox("Do you want to use Click and Type?", _
        vbYesNo)
    If x = vbYes Then
        Options.AllowClickAndTypeMouse = True
        MsgBox "Click and Type enabled!"
    End If
End If 

Но данная фишка у меня вообще не работает !!!
Может подскажите живые иностранные форумы где могут помочь?