Переход с абсолютных гиперссылок на относительные (Microsoft Word)
У Линды есть документ 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.