Игорь хочет автоматизировать вставку гиперссылки URL в документ Word. URL-адрес будет связан с фразой, например «щелкните здесь». Сначала он копирует URL-адрес определенного веб-сайта в буфер обмена.

Затем он записывает макрос, который открывает диалоговое окно «Вставить гиперссылку» (Ctrl + K), вставляет в соответствующее поле URL-адрес из буфера обмена (Ctrl + V) и нажимает OK. Когда он позже запускает макрос, он каждый раз дает ему один и тот же URL-адрес. Игорь хочет вставлять новый URL-адрес в диалоговое окно каждый раз, когда запускает макрос, но, похоже, не знает, как это сделать.

Когда вы записываете макрос, он буквально говорит о том, что он делает — он точно записывает шаги, которые вы выполняете, включая то, как заполняются диалоговые окна. Решение не в том, чтобы искать способы вставить новую информацию в диалоговое окно, а в том, чтобы посмотреть, как вы создаете свою гиперссылку.

Вот что будет записано, если вы вставите гиперссылку при запущенном макросе записи:

Sub Macro1()

' ' Macro1 Macro ' '     ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:= _         "//", SubAddress:="", ScreenTip:="", TextToDisplay:= _         "click here"

End Sub

Игорь хочет изменить цель гиперссылки, которая назначена свойству Address; это то, что «вставляется» в поле «Адрес» диалогового окна. Для этого вы можете изменить свой макрос простым способом, например:

Sub Macro2()

Dim sTemp As String     sTemp = "//"



ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, _       Address:= sTemp, SubAddress:="", ScreenTip:="", _       TextToDisplay:= "click here"

End Sub

Все, что было сделано в этом примере, — это удалить некоторые ненужные комментарии в начале макроса и создать строковую переменную sTemp, которая теперь содержит цель для гиперссылки. Затем эта переменная присваивается свойству Address. Таким образом, чтобы изменить цель, достаточно изменить значение переменной sTemp — и есть несколько способов сделать это.

Один из способов — использовать функцию InputBox для создания собственного диалогового окна следующим образом:

Sub Macro3()

Dim sTemp As String     Dim sPrompt As String     Dim sTitle As String

sPrompt = "Enter the target for the hyperlink"

sTitle = "Hyperlink Destination"

sTemp = "//"

sTemp = InputBox(sPrompt, sTitle, sTemp)



ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, _       Address:= sTemp, SubAddress:="", ScreenTip:="", _       TextToDisplay:= "click here"

End Sub

Конечно, Игорь упомянул, что в процессе он фактически копирует URL-адрес в буфер обмена. Если это тот процесс, который он хочет использовать, можно назначить URL-адрес на основе того, что находится в буфере обмена при запуске макроса. Вот как бы вы это сделали:

Sub Macro4()

Dim sTemp As String     Dim MyData As DataObject     Set MyData = New DataObject

MyData.GetFromClipboard     sTemp = Trim(MyData.GetText(1))



ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, _       Address:= sTemp, SubAddress:="", ScreenTip:="", _       TextToDisplay:= "click here"

End Sub

Чтобы использовать буфер обмена таким образом, вам необходимо настроить ссылку на Microsoft Forms в редакторе VBA. (Выберите «Ссылки» в меню «Инструменты» редактора.)

Также обратите внимание, что все эти примеры изменяют то, что присвоено свойству Address вашей новой гиперссылки. Существует большая вероятность, что вы захотите изменить макрос, чтобы также изменить то, что присвоено свойству TextToDisplay.

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

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

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

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

(Microsoft Word — самая популярная программа для обработки текстов в мире.) Этот совет (11906) применим к Microsoft Word 2007, 2010, 2013, 2016, 2019 и Word в Office 365. Вы можете найти версию этого совета для старый интерфейс меню Word здесь:

link: / word-Changing_What_Is_Pasted_in_a_Dialog_Box [Изменение того, что вставлено в диалоговое окно].