Этот глюк в WORD-е только у меня?

Программирование на Visual Basic for Applications
Shurrik
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 110
Зарегистрирован: 20.05.2004 (Чт) 5:35
Откуда: Керчь, Крым

Этот глюк в WORD-е только у меня?

Сообщение Shurrik » 15.03.2011 (Вт) 8:39

WORD 2003. Делаю поиск и замену текста. Все ОК. Записываю макрос, чтобы узнать, как это делается. Запускаю этот макрос. Замена происходит, но не везде, в надписях остается по старому. Когда надпись выделена, то замена происходит, но только в одной надписи. А их у меня много.
Вопрос: а можно, чтобы макрос делал то же самое, что я ручками? Или у меня WORD с глюками?
Колесо: Хочешь жить? Умей вертеться.

Evans
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 22.08.2008 (Пт) 11:27

Re: Этот глюк в WORD-е только у меня?

Сообщение Evans » 30.03.2011 (Ср) 20:14

Попробовал...
Код: Выделить всё
Sub GoToOpenSource()
Dim aStory
   
For Each aStory In StoryRanges
    If aStory.StoryType = wdTextFrameStory Then
        aStory.Find.Execute FindText:="Windows", ReplaceWith:="Linux", Replace:=wdReplaceAll
    End If
Next
End Sub


Заменяет указанный текст только в последней надписи в документе. Чума какая-то ((.

Shurrik
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 110
Зарегистрирован: 20.05.2004 (Чт) 5:35
Откуда: Керчь, Крым

Re: Этот глюк в WORD-е только у меня?

Сообщение Shurrik » 31.03.2011 (Чт) 7:07

Уточняю. Если выделена одна надпись, то замена только в ней, а в тексте документа нет. Если выделить несколько надписей, то замена только в одной. Странная какая-то логика.
Выделяю по очереди все надписи и делаю замену. А вот как снять выделение с надписи, чтобы сделать замену в самом документе - облом. Вроде простое действие, а как сделать? Может кто знает?
Колесо: Хочешь жить? Умей вертеться.

Gloom
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 200
Зарегистрирован: 23.11.2004 (Вт) 15:57
Откуда: СПб

Re: Этот глюк в WORD-е только у меня?

Сообщение Gloom » 02.04.2011 (Сб) 15:31

Evans писал(а):Попробовал...
Заменяет указанный текст только в последней надписи в документе. Чума какая-то ((.


...Use the NextStoryRange property to loop through all stories in a document...

Код: Выделить всё
Public Sub ReplaceTextInRange(RangeToReplace As Range, ByVal Text As String, ByVal ReplacementText As String)
       
        With RangeToReplace.Find
       
            .Text = Text
            .Replacement.Text = ReplacementText
            .Wrap = wdFindContinue
            .Execute Replace:=wdReplaceAll
           
        End With
       
End Sub

Public Sub ReplaceText(ByVal Text As String, ByVal ReplacementText As String)
    Dim Story As Range
   
    For Each Story In ActiveDocument.StoryRanges
       
        Do
       
            ReplaceTextInRange Story, Text, ReplacementText
            Set Story = Story.NextStoryRange
           
        Loop While Not Story Is Nothing
       
    Next
   
End Sub

ReplaceText "Windows", "Linux"

Shurrik
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 110
Зарегистрирован: 20.05.2004 (Чт) 5:35
Откуда: Керчь, Крым

Re: Этот глюк в WORD-е только у меня?

Сообщение Shurrik » 03.04.2011 (Вс) 8:09

Gloom, огромное спасибо!
Все работает отлично!
Колесо: Хочешь жить? Умей вертеться.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

    TopList