У Линды есть документ Word, содержащий множество (более 1800) гиперссылок на ресурсы в Интернете. Ей необходимо преобразовать все гиперссылки, чтобы они не были абсолютными в URL-адрес в Интернете, а указывали на относительное местоположение на USB-накопителе. Имя HTML-файла на USB-накопителе будет таким же, как и в Интернете, меняется только местоположение этого HTML-файла. Линда задается вопросом, как лучше всего осуществить преобразование.

Лучше всего выполнять преобразования с помощью макроса. Каждая гиперссылка в вашем документе хранится в коллекции гиперссылок, к которой можно легко получить доступ через VBA. Это позволяет вам проходить через коллекцию гиперссылок, проверять адреса для каждой и затем вносить в них изменения. Вот пример такого макроса:

Sub ConvertHyperlinks()

Dim sNewBase As String     Dim sFile As String     Dim sNewFile As String     Dim sChanged As String     Dim sNotChanged As String     Dim sTemp As String     Dim J As Integer     Dim h As Hyperlink

sNewBase = "c:\myplace\"

sChanged = ""

sNotChanged = ""



For Each h In ActiveDocument.Hyperlinks         sTemp = h.Address         If Left(sTemp, 5) = "https:" Then             sFile = ""

For J = Len(sTemp) To 2 Step -1                 If Mid(sTemp, J, 1) = "/" Then                     sFile = Right(sTemp, Len(sTemp) - J)

Exit For                 End If             Next J

If sFile > "" Then                 sNewFile = sNewBase & sFile                 h.Address = sNewFile                 sChanged = sChanged & sTemp & " (changed to " & _                   sNewFile & ")" & vbCrLf             Else                 sNotChanged = sNotChanged & sTemp & vbCrLf             End If         Else             sNotChanged = sNotChanged & sTemp & vbCrLf         End If     Next h

Documents.Add     Selection.TypeText "The following hyperlinks were modified:" & vbCrLf     Selection.TypeText sChanged & vbCrLf & vbCrLf     Selection.TypeText "The following hyperlinks were not modified:" & vbCrLf     Selection.TypeText sNotChanged & vbCrLf End Sub

Макрос начинается с пошагового прохождения коллекции гиперссылок. Каждому адресу присваивается переменная sTemp, которая затем проверяется, начинается ли она с «https:». Некоторые гиперссылки — например, ссылки на адреса электронной почты или существующие файлы — не начинаются с этих символов.

Если совпадение найдено, то код переходит назад по адресу, чтобы найти последнюю косую черту в этом адресе. Когда он найден, sFile устанавливается равным всему после этого последнего слэша, что означает, что он будет равен HTML-файлу.

Интересное примечание: когда вы создаете гиперссылку в текстовом документе, Word немного обрабатывает то, что вы вводите, по сравнению с тем, что фактически хранится в гиперссылке. Например, предположим, что вы вводите в документ следующее:

www.Tips.net

Word автоматически распознает это как веб-сайт и преобразует его в гиперссылку. (При условии, конечно, что у вас есть Word, настроенный для автоматического преобразования URL-адресов.) Если вы посмотрите на адрес, фактически сохраненный в созданной гиперссылке, вы увидите следующее:

https://www.Tips.net/

Поскольку этот адрес начинается с «https:», макрос будет считать его обрабатываемым. Однако цикл, который движется назад по адресу в поисках последнего символа косой черты, найдет его в самом конце. Это означает, что sFile будет пустым из-за этого кода:

sFile = Right(sTemp, Len(sTemp) - J)

Длина sTemp и J одинакова для последнего символа в строке, поэтому sFile в конечном итоге содержит крайний правый символ 0, что означает, что он пуст. Суть в том, что он не будет содержать имени файла, поэтому исходный URL-адрес не преобразуется во что-то другое.

Чтобы макрос работал правильно в вашей системе, вам нужно изменить строку sNewBase, чтобы она содержала все, что вы хотите добавить в начало обработанных адресов. Обратите внимание, что, как написано, в начало файла по умолчанию добавляется строка «c: \ myplace \». Таким образом, «link: / privacy» заменяется на «c: \ myplace \ privacy». Этот преобразованный адрес, строго говоря, не является относительной гиперссылкой. Относительная гиперссылка не будет иметь в начале символов c: \, поэтому в итоге получится что-то вроде «\ myplace \ privacy». Опять же, вы можете изменить значение sNewBase на все, что захотите, чтобы преобразованные гиперссылки выглядели так, как вы хотите.

Запуск макроса не занимает много времени; это очень быстро, независимо от того, сколько гиперссылок в вашем документе. Когда макрос завершен, он создает новый документ, в котором показаны измененные и не измененные гиперссылки.

_Примечание: _

Если вы хотите знать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах WordTips), я подготовил специальную страницу, содержащую полезную информацию.

https: — wordribbon.tips.net-WordTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера] `.

WordTips — ваш источник экономичного обучения работе с Microsoft Word.

(Microsoft Word — самая популярная программа для обработки текстов в мире.) Этот совет (12931) относится к Microsoft Word 2007, 2010, 2013, 2016, 2019 и Word в Office 365.