1

Тема: Замена текста на гиперссылку

Добрый день!
Столкнулся с такой проблемой. Имеется множество вордовских файлов, в некорых из них несколько раз встречается определенный текст, например, "131-ФЗ", надо заменить этот текст на гиперссылку на сайт в интернете.

Т.е., я так понимаю, мне нужен макрос, который будет искать в тексте определеный текст и заменять его на гиперсслыку. Как это организовать ума не приложу.
Заранее спасибо за помощь

2

Re: Замена текста на гиперссылку

Сам дошел вот до этого момента, я нахожу нужный кусок теста, и его должен заменить на гиперссылку. Следующий макрос просто заменяет один текст на другой
-----------------
Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "131-ФЗ "
        .Replacement.Text = "ГИПЕРССЛЫКА"
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
-----------------
Также нашел макрос для создания гиперссылки
------------
ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:="http://АДРЕС ССЫЛКИ", TextToDisplay:="131-ФЗ"

вот как друг с другом свзять?

3

Re: Замена текста на гиперссылку

включите на запись рекордер и всё прояснится

4

Re: Замена текста на гиперссылку

Пробовал, но там нельзя заменять текст на гиперсслыку.
Я делал так запись макроса: Поиск текста, вставить-гиперссылка.
В итоге получался макрос, который заменяет только одно совпадение.


Вчера ковырялся с этим макросом, дошел до такого вида. Проблема тут в остановке макроса. ActiveDocument.TextLineEnding - я так понимаю это EOF?
Подскажите, каким параметром надо выключать повторение скрипта?

Sub hyper1()
Do While ActiveDocument.TextLineEnding = False
Selection.Find.Text = "131-ФЗ"
Selection.Find.Execute
ActiveDocument.Hyperlinks.Add _
Anchor:=Selection.Range, _
Address:="http://сайт", _
TextToDisplay:="131-ФЗ"
Loop

End Sub

5

Re: Замена текста на гиперссылку

Прошу прощения, что оставляю много сообщений.
Я нашел решение, вот оно

Sub hyperlink_instead_text()
Selection.Find.Text = ""
Selection.Find.Execute
Selection.HomeKey Unit:=wdStory
i = 0
Do While i < 5
Selection.Find.Forward = True
Selection.Find.Text = "131-ФЗ"
If Selection.Find.Execute = True Then
ActiveDocument.Hyperlinks.Add _
Anchor:=Selection.Range, _
Address:="http://www.ССЫЛКА", _
TextToDisplay:="131-ФЗ"
ElseIf Selection.Find.Execute = False Then i = 5
End If
Loop

End Sub

6

Re: Замена текста на гиперссылку

я преобразовал макрос под себя,
но случается что вот таким способом
не всегда заменяется текст из этой серии
например
5.7.43

Sub hyperlink_instead_text()
Dim sMask As String 'Маска поиска файлов
Dim urlMask As String 'Маска ссылки
Dim textMask As String 'Маска текста

i = 4
j = 0

' Selection.Find.Text = ""
'Selection.Find.Execute
'Selection.HomeKey Unit:=wdStory

Do While i = 4 And j < 10
sMask = "5.7.4" & j
urlMask = "2%20ОБЩАЯ%20ЧАСТЬ_Методика_OLAP_ПФР.doc#Классификатор_5_7_4" & j
textMask = "5.7.4" & j
Selection.Find.Forward = True
Selection.Find.Text = sMask
If Selection.Find.Execute = True Then
ActiveDocument.Hyperlinks.Add _
Anchor:=Selection.Range, _
Address:=urlMask, _
TextToDisplay:=textMask
ElseIf Selection.Find.Execute = False Then j = j + 1
End If
If j = 10 Then i = 5
Loop
End Sub

но если я сделаю так, то записи заменятся:

Sub hyperlink_instead_text()
Selection.Find.Text = ""
Selection.Find.Execute
Selection.HomeKey Unit:=wdStory
Do While i = 7
Selection.Find.Forward = True
Selection.Find.Text = "5.7.43"
If Selection.Find.Execute = True Then
ActiveDocument.Hyperlinks.Add _
Anchor:=Selection.Range, _
Address:="2%20ОБЩАЯ%20ЧАСТЬ_Методика_OLAP_ПФР.doc#Классификатор_5_7_43", _
TextToDisplay:="5.7.43"
ElseIf Selection.Find.Execute = False Then i = 8
End If
Loop

End Sub


Как так?
Что делать?

7

Re: Замена текста на гиперссылку

Т.е. когда явно указываешь поисковую строку (5.7.43), то строка находится,
а когда перебираешь варианты
5.7.40
5.7.41
5.7.42
5.7.43
и т.д.

то строка не находится.

Что не так???