Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2013, 11:51   #1
wander_vafl9
Пользователь
 
Регистрация: 21.11.2013
Сообщений: 11
Восклицание необходимо создать макрос в worde!

Необходим макрос по поиску чисел в word файле! макрос создается через vb в worde 2007! нашел пример с пробелами, но не смог его переделать. цифры должен считать за 1 даже если они такие: 1214, 3113, 12, 2. т.е. макрос не должен видеть различие между этими цифрами и считать каждую как 1 отдельную. очень нужна помощь. заранее спасибо за помощь!) (если можно полный код для вставки)
Код:
Sub probeli()
Selection.WholeStory
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = " {1;}"
.Replacement.Text = " "
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.MoveRight Unit:=wdCharacter, Count:=1
End Sub

Последний раз редактировалось Serge_Bliznykov; 21.11.2013 в 13:42.
wander_vafl9 вне форума Ответить с цитированием
Старый 21.11.2013, 13:13   #2
wander_vafl9
Пользователь
 
Регистрация: 21.11.2013
Сообщений: 11
По умолчанию

Нашел поиск по фамилии, помогите организовать поиск для чисел!!
Код:
With ActiveDocument.Range.Find
   .Text = "Галкин"
  Do While .Execute = True
     Счётчик = Счётчик + 1
  Loop
End With
MsgBox (Счётчик & " раз(а) встречается фамилия Галкин")

Последний раз редактировалось Serge_Bliznykov; 21.11.2013 в 13:42.
wander_vafl9 вне форума Ответить с цитированием
Старый 21.11.2013, 14:09   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

если речь идёт исключительно о ЦЕЛЫХ числах, причём разделённых знаками препинания, тогда Вам может помочь такой код:
Код:
Sub Find1()
Dim Счётчик As Long
Счётчик = 0
With ActiveDocument.Range.Find
   .Text = "<[0-9]@>"
   .Replacement.Text = ""
        .Forward = True
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
        
  Do While (.Execute = True) And (Счётчик < 500)
     Счётчик = Счётчик + 1
  Loop
End With
MsgBox ("найдено " & Счётчик & " чисел в тексте")

End Sub
этот код в такой фразе:
Now bububu size is 22, 34 before 100001112 after 1 2 test
найдёт 5 чисел

если же числа внутри текста 55aa7bb или же речь идёт о вещественных числах - тогда предложенный выше код работать не будет
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.11.2013, 14:50   #4
wander_vafl9
Пользователь
 
Регистрация: 21.11.2013
Сообщений: 11
Радость

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
.Replacement.Text = ""
.Forward = True
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
Спасибо, то что нужно, но так как я познаю только эту часть, то хотел бы попросить объяснить код, который находится выше!)
wander_vafl9 вне форума Ответить с цитированием
Старый 21.11.2013, 14:58   #5
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Кроме строки
Код:
.MatchWildcards = True
этот кусок вообще не нужен.

Но если интересно, замените
Код:
ActiveDocument.Range.Find
на
Код:
Selection.Find
и (после выполнения поиска и замены) нажмите Ctrl-h в документе Word — снятые галочки в открывшемся диалоге поиска соответствуют строкам с False, а установленная — строке с True: Нахождение цифр в скобках (рисунок).

Код:
.Replacement.Text = ""
соответствует пустому текстовому полю "Заменить на:". Кстати: число замен можно извлечь из недр Word: Где находится инфа о кол-ве замененных слов?

Цитата:
Сообщение от wander_vafl9 Посмотреть сообщение
...я познаю только эту часть...
Познайте же и прочие: Постижение Word!

P/s: при поиске вручную, через Ctrl-h, необходимо сбросить параметры "Найти и заменить".

Последний раз редактировалось Sasha_Smirnov; 22.11.2013 в 03:01. Причина: различие между ActiveDocument.Range.Find и Selection.Find
Sasha_Smirnov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Необходимо упростить макрос, распределяющий данные по листам Aicha Помощь студентам 3 20.06.2013 10:56
Необходимо доработать макрос, который создает шаблон Androgen13 Microsoft Office Excel 10 24.07.2011 22:10
необходимо доработать макрос FormAlDeGid Microsoft Office Excel 6 01.04.2010 12:09
Макрос вставки файлов в листы-Необходимо изменить ниже приведённый макрос as-is Microsoft Office Excel 4 25.02.2010 07:51
В БД необходимо создать макрос, суть которого расчет итоговой строки по условию mex32 Microsoft Office Excel 31 01.04.2009 13:05