Статьи из блога

Извлечение гиперссылок из документа

Андрей интересуется:

Как извлечь гиперссылки из документа Microsoft Office Word 2003 в другой документ? И если гиперссылок много, то выполнять вручную - это довольно утомительный процесс.

Для решения этой задачи можно воспользоваться двумя вариантами макросов. Но прежде, чем выполнять макросы, создайте в корне диска новую папку Test, так как она будет использоваться для хранения нового документа.

 

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

Sub extractHyperlinks()
'Извлечение всех текстовых ссылок из документа и
'копирование их в новый документ
Dim oHpl As Hyperlink
Dim dAD As Document  'active document
Dim dDc As Document  'new document
Set dAD = ActiveDocument
Set dDc = Documents.Add(Visible:=False)
For Each oHpl In dAD.Hyperlinks
   oHpl.Range.Copy
   dDc.Activate
   Selection.Paste
   Selection.TypeParagraph
Next
dDc.SaveAs "C:\Test\hl.doc"
dDc.Close
Set dAD = Nothing
Set dDc = Nothing
End Sub

Второй вариант - извлечь только адреса ссылок без текста самой ссылки. То есть, если в вашем документе ссылка вида Скачать часть 1 ссылается на адрес типа http://wordexpert.ru/link.zip, то в новый документ будут вставлены исключительно адреса ссылок. Вот пример макроса:

Sub extractHyperlinks2()
'Извлечение всех адресов гиперссылок из документа и
'копирование их в новый документ
Dim oHpl As Hyperlink
Dim sAd As String
Dim dAD As Document  'active document
Dim dDc As Document  'new document
Set dAD = ActiveDocument
Set dDc = Documents.Add(Visible:=False)
For Each oHpl In dAD.Hyperlinks
   sAd = oHpl.Address
   dDc.Activate
   Selection.TypeText sAd & vbCr
Next
dDc.SaveAs "C:\Test\hl2.doc"
dDc.Close
Set dAD = Nothing
Set dDc = Nothing
End Sub

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru rutvit.ru myspace.com technorati.com digg.com friendfeed.com pikabu.ru blogger.com liveinternet.ru livejournal.ru memori.ru google.com bobrdobr.ru mister-wong.ru yahoo.com yandex.ru del.icio.us

Еще записи по вопросам использования Microsoft Word:

Комментариев: 5

  1. Макс
    13.09.2016 в 18:37 | #1

    Первый вариант - извлечь все текстовые ссылки в новый документ без изменения -- не работает! В некоторых случаях. Когда в документе есть ошибки. В моём случае при открытии документа вижу окошко

    "ОШИБКИ ВО ВРЕМЯ ЗАГРУЗКИ

    ПРИ ЗАГРУЗКЕ БЫЛИ ОБНАРУЖЕНЫ ОШИБКИ В СЛЕДУЮЩИХ ОБЛАСТЯХ:

    отсутствующий файл: ..."

    и т.д.

    При попытке выполнить макрос extractHyperlinks вылезает окошко:

    Microsoft Visual Basic

    Run-time error '4198':

    Ошибка команды

    жму Debug

    и желтым цветом выделена строка макроса:

    oHpl.Range.Copy

    Нельзя ли как-то так сделать, чтобы ссылки извлекались и из повреждённого документа?

    Вариант 2 кстати работает и в повреждённом.

  2. 24.02.2018 в 17:31 | #2

    Спасибо, всё работает!

    А можно еще как то добавить фильтр, чтоб не переносились ссылки, которые начинаются с определенного символа, например "#".

    Заранее благодарен!

  3. Максим
    24.02.2018 в 18:00 | #3

    Или же, записать ссылки в отдельные ячейки эксель

  4. Максим
    24.02.2018 в 18:02 | #4

    Как записать каждую ссылку в отдельную ячейку экселя, место ворд документа?

    Заранее благодарен!

  5. Аноним
    09.09.2021 в 16:04 | #5

    Круто, спасибо!

Оставьте комментарий!

(обязательно)

^ Наверх