Статьи из блога
Извлечение гиперссылок из документа
Андрей интересуется:
Как извлечь гиперссылки из документа 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
Метки: гиперссылки | макросы
Просмотров: 24664
Подписаться на комментарии по RSS
Версия для печати
Еще записи по вопросам использования Microsoft Word:
- 10 вопросов и ответов по редактору Word (1 часть)
- 3 способа очистки списка недавно открытых документов
- Word 2007: добавляем свою вкладку и свои команды
- Word 2007: полотно, рисунки, линии
- Word 2007: смена формата сохранения файла
- Word 97 - решение проблемы с отображением символов на линейке
- Абзац с цветным фоном
- Автоматизация текстового набора в Word
- Автоматическая запись макроса
- Автоматическая нумерация билетов
- Автоматическая расстановка переносов
- Автоматическое обновление полей при открытии документа
- Автоматическое сохранение документа при его закрытии
- Автотекст с последовательной нумерацией
- Белый текст на синем фоне в Word 2007
- Быстрая смена ориентации страниц документа
- Быстрое перемещение между открытыми документами Word
- Быстрое создание нового документа на основе шаблона
- Быстрый ввод текста с помощью команды =rand()
- Ввод повторяющихся фрагментов текста в Word 2007
- Ввод часто повторяющихся фрагментов текста
- Вертикальное выравнивание текста
- Возможно ли запретить копирование текста из документа Word?
- Вопрос о работе с графиками (диаграммами) в Word
- Вопросы и ответы о гиперссылках в редакторе Word
Комментариев: 5
Первый вариант - извлечь все текстовые ссылки в новый документ без изменения -- не работает! В некоторых случаях. Когда в документе есть ошибки. В моём случае при открытии документа вижу окошко
"ОШИБКИ ВО ВРЕМЯ ЗАГРУЗКИ
ПРИ ЗАГРУЗКЕ БЫЛИ ОБНАРУЖЕНЫ ОШИБКИ В СЛЕДУЮЩИХ ОБЛАСТЯХ:
отсутствующий файл: ..."
и т.д.
При попытке выполнить макрос extractHyperlinks вылезает окошко:
Microsoft Visual Basic
Run-time error '4198':
Ошибка команды
жму Debug
и желтым цветом выделена строка макроса:
oHpl.Range.Copy
Нельзя ли как-то так сделать, чтобы ссылки извлекались и из повреждённого документа?
Вариант 2 кстати работает и в повреждённом.
Спасибо, всё работает!
А можно еще как то добавить фильтр, чтоб не переносились ссылки, которые начинаются с определенного символа, например "#".
Заранее благодарен!
Или же, записать ссылки в отдельные ячейки эксель
Как записать каждую ссылку в отдельную ячейку экселя, место ворд документа?
Заранее благодарен!
Круто, спасибо!