Вопрос или проблема
Существует ли способ получить список всех гиперссылок в документе Microsoft Office 2010?
Я пытаюсь проверить большое количество крупных документов (смешанные файлы Word, Excel и PowerPoint) на наличие сломанных ссылок, и не хотел бы читать каждую строку каждого документа, чтобы убедиться, что у меня есть список всех ссылок.
Для MS WORD,
Нажмите Alt + F9, чтобы отобразить поля
Ctrl + F, чтобы открыть окно поиска
Поиск: ^d hyperlink
Отметьте "Выделить все найденные элементы ..."
Нажмите кнопку Найти все
Закройте диалоговое окно
Ctrl + C, чтобы скопировать всё, что выделено
Откройте новый документ и вставьте.
Для Excel,
Закройте все книги, кроме той, в которой хотите найти ссылки.
В меню Правка нажмите Найти.
Нажмите Параметры.
В поле Найти введите [.
В поле В пределах нажмите Книга.
В поле Искать в выберите Формулы.
Нажмите Найти все.
В поле внизу ищите в колонке Формула формулы, содержащие [.
Чтобы выделить ячейку со ссылкой, выберите строку в поле внизу.
Ссылки также часто используются в именах, текстовых полях или названиях диаграмм.
Чтобы перечислить все гиперссылки в документе Word:
Sub CheckLinks()
Set doc = ActiveDocument
Dim i
For i = 1 To doc.Hyperlinks.Count
Debug.Print doc.Hyperlinks(i).Address & " " & doc.Hyperlinks(i).SubAddress
Next
End Sub
Я действительно нашел ответ @user228546 полезным, так как не смог заставить свою версию Microsoft Word (2013) показать мне параметры в принятом ответе. Однако он немного краток и требует хороших знаний Visual Basic for Applications (VBA), чтобы всё заработало.
Вот слегка модифицированный ответ, который может помочь некоторым людям, не так хорошо знающим VBA.
Вам нужно открыть редактор VBA, используя Alt+F11. Используйте “Вставка” ->
“Модуль” вверху, чтобы получить окно редактора.
Получить адреса ссылок в новом документе
На самом деле я собираюсь сохранить извлечённые гиперссылки в новый документ, который я затем сохраню.
Введите (или скопируйте/вставьте) следующее в окно редактора.
Sub GetLinksInNewDoc()
'
' Находит все гиперссылки (даже с странными форматами,
' пока они активны)
' и отображает их в новом документе.
'
' Объявляем типы наших переменных
Dim doc As Document
Dim newDoc As Document
Dim hlink As Hyperlink
' Используем скрипт на текущем документе
Set doc = ActiveDocument
' Открываем новый документ, чтобы поместить адреса ссылок
Set newDoc = Documents.Add
' Проходим через все гиперссылки, используя переменную hlink
With doc
For Each hlink In .Hyperlinks
' Переключаемся в новый документ
newDoc.Activate
' Вставляем адрес гиперссылки в новый документ
With Selection
.InsertAfter hlink.Address & " " & hlink.SubAddress
.InsertAfter vbNewLine
End With
Next hlink
End With
Set doc = Nothing
Set newDoc = Nothing
End Sub
Убедитесь, что ваш документ с гиперссылками является последним документом Microsoft Word, который вы выделили. Сохраните свой код. Нажмите на зеленую стрелку для запуска, или из верхней панели инструментов выберите “Запустить” ->
“Запустить Sub/UserForm”, или нажмите F5
Обратите внимание, что вы можете увидеть “серый призрак” текста, который в конечном итоге будет в документе – что-то вроде
Получить адреса ссылок в файле TXT
Теперь, если вы действительно хотите сохранить URL в TXT
файл, что и привело меня к этому вопросу, вы можете использовать ту же процедуру, просто ваш код должен быть
Sub GetLinksInTxtFile()
'
' Находит все гиперссылки (даже с странными форматами,
' пока они активны)
' и выводит их в TXT файл.
' TXT файл будет записан в том же каталоге,
' что и оригинальный документ
'
' Объявляем типы наших переменных
Dim doc As Document
Dim hlink As Hyperlink
' Используем скрипт на текущем документе
Set doc = ActiveDocument
' Подготавливаем текстовый файл, в который вы будете записывать URL
' Немного старого BASIC
Open doc.Path & "\the_urls.txt" For Output As #1
' Проходим через все гиперссылки, используя переменную hlink
With doc
For Each hlink In .Hyperlinks
Print #1, hlink.Address & " " & hlink.SubAddress
Next hlink
End With
Close #1
Set doc = Nothing
End Sub
Надеюсь, это поможет.
Источник для моего понимания, схема копирования в новый документ.
Источник для записи в текстовый файл (что я изначально искал)
Используйте LibreOffice и панель навигатора. Вы можете просматривать всевозможные вещи из документа, включая гиперссылки.
Решением “Получить адреса ссылок в новом документе” было единственным, что я смог заставить работать, но оно дало мне URL гиперссылок, а не отображаемый текст, который мне нужен….
LibreOffice и панель навигатора (ответ Питера) действительно дают отображаемые тексты. Но не существует способа скопировать список затем…
Ответ или решение
Как получить список всех гиперссылок в документах Microsoft Office 2010
Если вам необходимо получить список всех гиперссылок в документах Microsoft Office 2010, существует несколько методов, которые можно использовать для обработки документов Word, Excel и PowerPoint. Ниже приведены детальные инструкции и примеры кода, которые помогут вам эффективно выявить все гиперссылки.
1. Microsoft Word
Чтобы извлечь все гиперссылки в документе Word, можно воспользоваться следующими методами:
Метод 1: Использование VBA
Если вы знакомы с Visual Basic for Applications (VBA), вы можете использовать следующий код для получения списка гиперссылок и их сохранения в новом документе:
Sub GetLinksInNewDoc()
Dim doc As Document
Dim newDoc As Document
Dim hlink As Hyperlink
Set doc = ActiveDocument
Set newDoc = Documents.Add
For Each hlink In doc.Hyperlinks
newDoc.Activate
With Selection
.InsertAfter hlink.Address & " " & hlink.SubAddress
.InsertAfter vbNewLine
End With
Next hlink
Set doc = Nothing
Set newDoc = Nothing
End Sub
Этот код перебирает все гиперссылки в активном документе и вставляет их адреса в новый документ.
Метод 2: Использование полей
- Нажмите
Alt + F9
для отображения полей. - Нажмите
Ctrl + F
для открытия окна поиска. - Введите
^d hyperlink
в поле поиска. - Убедитесь, что выбрана опция "Подсветить все найденные элементы".
- Нажмите "Найти все".
- Закройте диалог и нажмите
Ctrl + C
, чтобы скопировать все подсвеченные элементы. - Откройте новый документ и вставьте.
2. Microsoft Excel
Для извлечения ссылки в Excel выполните следующие шаги:
- Закройте все рабочие книги, за исключением той, в которой хотите найти ссылки.
- На меню "Правка" выберите "Найти".
- Нажмите "Опции".
- Введите
[
в поле "Что искать". - Выберите "Рабочая книга" в поле "В пределах".
- Выберите "Формулы" в поле "Искать в".
- Нажмите "Найти все".
- В нижней части окна найдите ссылки, открытые среди найденных формул.
Таким образом, вы сможете увидеть все ссылки, находящиеся в формулах.
3. Microsoft PowerPoint
Для получения списка гиперссылок в PowerPoint можно воспользоваться следующими инструкциями:
- Используя VBA, вы можете написать аналогичный код для прохождения по всем слайдам и их форматам, чтобы найти гиперссылки.
Пример кода для извлечения гиперссылок из презентации:
Sub GetLinksFromSlides()
Dim pptSlide As Slide
Dim link As Hyperlink
Dim output As String
For Each pptSlide In ActivePresentation.Slides
For Each link In pptSlide.Hyperlinks
output = output & link.Address & vbCrLf
Next link
Next pptSlide
MsgBox output
End Sub
Этот код собирает все гиперссылки из текущей презентации и выводит их в окне сообщений.
Заключение
Используя описанные методы, вы можете быстро и эффективно получить список всех гиперссылок из документов Microsoft Word, Excel и PowerPoint. Эти техники помогут вам проверить документы на наличие битых ссылок без необходимости вручную просматривать каждый документ. Не стесняйтесь настраивать код по своему усмотрению, чтобы адаптировать его под свои потребности.