6

Существует ли какой-либо метод, с помощью которого можно получить список всех гиперссылок в документе Microsoft Office 2010?

Я пытаюсь проверить большое количество больших документов (пакет документов Word, Excel и PowerPoint) на наличие неработающих ссылок, и мне не нужно читать каждую строку каждого документа, чтобы убедиться, что у меня есть список все ссылки.

3 ответа3

8

Для MS WORD,

 Press Alt + F9 to display the fields

Ctrl + F to open the search box

Search: ^d hyperlink

Check "Highlight all items found ..."

Click on the Find All button

Close the dialog

Ctrl + C to copy everything that is highlighted

Open a new document and paste.

Для Excel

Close all workbooks except the one you want to find the links in.
On the Edit menu, click Find.
Click Options.
In the Find what box, enter [.
In the Within box, click Workbook.
In the Look In box, click Formulas.
Click Find All.
In the box at the bottom, look in the Formula column for formulas that contain [.
To select the cell with a link, select the row in the box at the bottom.
Links are also commonly used in names, text boxes, or chart titles.
1

Чтобы отобразить все гиперссылки в документе 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
0

Я действительно нашел ответ @ user228546 полезным, так как мне не удалось заставить мою версию Microsoft Word (2013) показать мне варианты в принятом ответе. Тем не менее, это немного кратко, и для того, чтобы все заработало, требуется хорошее знание Visual Basic для приложений (VBA).

Вот слегка измененный ответ, который может помочь некоторым людям, которые не так много знают о VBA.

Вам нужно будет перейти в редактор VBA, используя Alt+F11. Используйте "Вставить" -> "Модуль" вверху, чтобы открыть окно редактора.


Получить адрес ссылки в новом документе

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

Введите (или скопируйте / вставьте) следующее в окне редактора.

Sub GetLinksInNewDoc()
'
' Finds all hyperlinks (even with strange formats,
' as long as they're active)
' and displays them in a new document.
'
    ' Declare the types of our variables
    Dim doc As Document
    Dim newDoc As Document
    Dim hlink As Hyperlink

    ' Use the script on the current document
    Set doc = ActiveDocument
    ' Open a new document to put the link addresses into
    Set newDoc = Documents.Add

    ' Loop through all the hyperlinks using the iterable hlink variable
    With doc
        For Each hlink In .Hyperlinks
            ' Switch into the new document
            newDoc.Activate

            ' Put the Hyperlink Address in the new document
            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()
'
' Finds all hyperlinks (even with strange formats,
' as long as they're active)
' and outputs them to a TXT file.
' The TXT file will be written in the same directory
' as the original document
'
    ' Declare the types of our variables
    Dim doc As Document
    Dim hlink As Hyperlink

    ' Use the script on the current document
    Set doc = ActiveDocument

    ' Get a text file ready to which you will write the URLs
    ' Some old-school BASIC
    Open doc.Path & "\the_urls.txt" For Output As #1

    ' Loop through all the hyperlinks using the iterable hlink variable
    With doc
        For Each hlink In .Hyperlinks
            Print #1, hlink.Address & " " & hlink.SubAddress
        Next hlink
    End With

    Close #1
    Set doc = Nothing
End Sub

Я надеюсь, что это помогает.


Источник для моего понимания, схема копирования в новый документ.

Другой связанный источник

Источник для записи в текстовый файл (который я искал изначально)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .