Получение списка всех гиперссылок?

Вопрос или проблема

Существует ли способ получить список всех гиперссылок в документе 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: Использование полей

  1. Нажмите Alt + F9 для отображения полей.
  2. Нажмите Ctrl + F для открытия окна поиска.
  3. Введите ^d hyperlink в поле поиска.
  4. Убедитесь, что выбрана опция "Подсветить все найденные элементы".
  5. Нажмите "Найти все".
  6. Закройте диалог и нажмите Ctrl + C, чтобы скопировать все подсвеченные элементы.
  7. Откройте новый документ и вставьте.

2. Microsoft Excel

Для извлечения ссылки в Excel выполните следующие шаги:

  1. Закройте все рабочие книги, за исключением той, в которой хотите найти ссылки.
  2. На меню "Правка" выберите "Найти".
  3. Нажмите "Опции".
  4. Введите [ в поле "Что искать".
  5. Выберите "Рабочая книга" в поле "В пределах".
  6. Выберите "Формулы" в поле "Искать в".
  7. Нажмите "Найти все".
  8. В нижней части окна найдите ссылки, открытые среди найденных формул.

Таким образом, вы сможете увидеть все ссылки, находящиеся в формулах.

3. Microsoft PowerPoint

Для получения списка гиперссылок в PowerPoint можно воспользоваться следующими инструкциями:

  1. Используя 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. Эти техники помогут вам проверить документы на наличие битых ссылок без необходимости вручную просматривать каждый документ. Не стесняйтесь настраивать код по своему усмотрению, чтобы адаптировать его под свои потребности.

Оцените материал
Добавить комментарий

Капча загружается...