1

Тема: необходимо написать макрос, способный вставить нужный символ

Необходимо написать макрос, способный вставить нужный символ в определённые строки документа. Сразу приведу 3 примера фрагментов текста, в которых требуется вставить этот символ:


Western Ukraine
#15
Jan 14, 2009

Launceston, Australia
#12
Jan 14, 2009

Essex Junction, VT
#11
Jan 13, 2009


необходимо вставить символ ##SL (или, например @__) перед наименованием населённого пункта в пустую строку, а название населённого пункта поместить на следующую вниз - то есть просто сдвинуть ниже (Western Ukraine или Essex Junction, VT или Launceston, Australia - в тексте таких вариантов огромное количество).
Постоянны только символ # - он больше нигде в документе не встречается и первые цифры года 200(x).
Должно получиться вот так:

##SL
Western Ukraine
#15
Jan 14, 2009

##SL
Launceston, Australia
#12
Jan 14, 2009

##SL
Essex Junction, VT
#11
Jan 13, 2009


Надеюсь я ясно изложил свой вопрос. Если нет, пожалуйста, скажите что не так!!! Очень надеюсь на вас! Заранее очень благодарен Вам!!!!!

Текста около 80000 страниц и таких значков нужно поставить в среднем около 5-ти на страницу... Вручную это можно делать вечность big_smile

2

Re: необходимо написать макрос, способный вставить нужный символ

ну, кто-нибудь подсобите)))))))))))))))

3

Re: необходимо написать макрос, способный вставить нужный символ

Попробуйте такой макрос (давно не программировал и уже многое подзабыл, так что извините за возможное усложнение):

Sub insSymbol()
'Поиск символа и вставка новой строки с текстом
Dim rngDoc As Range  'активный документ
Dim fStr As String  'строка поиска
Dim fChg As String  'строка вставки

Set rngDoc = ActiveDocument.Range
fStr = "#"  'строка поиска
fChg = "@__"  'строка вставки

Selection.EndKey wdStory   'переходим в конец документа
Application.ScreenUpdating = False  'запрет обновления экрана
With rngDoc.Find
  .ClearFormatting
  .Replacement.ClearFormatting
  .Forward = False
  .Wrap = wdFindAsk
  .Text = fStr
  'запускаем цикл поиска
  While Selection.Find.Execute = True
    Selection.Collapse direction:=wdCollapseStart
    Selection.MoveUp Unit:=wdParagraph, Count:=1, Extend:=wdMove
    Selection.InsertAfter fChg
    Selection.Collapse direction:=wdCollapseEnd
    Selection.TypeParagraph
  Wend
End With
Application.ScreenUpdating = True  'восстанавливаем обновление экрана
End Sub

4

Re: необходимо написать макрос, способный вставить нужный символ

большое спасибо за помощь и за отзывчивость!  smile
мне написали макрос - я его помещу чуть ниже. Он работает... Учитывая то, что office ПОСТОЯННО подбрасывает какие-то сюрпризы, запасной макрос имеет огромнейшую ценность!!))) если первый по каким-то странным причинам перестанет работать в конкретном документе (их 54), то на помощь придёт Ваш!!)) Спасибо Вам огромное за Ваш макрос!!! smile

Вот тот, что мне написали:

Sub m_1()
With ActiveDocument.Range.Find
    .Text = "#"
    Do While .Execute
        .Parent.Paragraphs(1).Previous.Range.InsertBefore (Chr(13))
        .Parent.Paragraphs(1).Previous(2).Range.InsertBefore ("##SL")
    Loop
End With
End Sub

Отредактировано admin (11.12.2010 16:41:44)