Грэм – редактор, и одна из (довольно обычных) задач, с которыми он сталкивается, – удалить http://из URL-адресов, начинающихся с http://www. Грэхему легко справится с этой задачей, если URL-адрес будет просто текстовым. Однако, если это гиперссылка, он должен отобразить диалоговое окно «Редактировать гиперссылку», выбрать http://в поле «Текст для отображения», удалить его и закрыть диалоговое окно.
К счастью, вы не обязательно всегда отображать диалоговое окно «Редактировать гиперссылку» для внесения изменений. Даже если гиперссылка активна, вы можете найти и заменить информацию в том, что отображается. Например, поиск http://www и замена его на www будет работать нормально даже для активных гиперссылок. Word изменяет только отображаемый текст, а не саму гиперссылку.
Если у вас много, много гиперссылок, которые нужно редактировать, и такое усечение URL-адресов является обычной задачей, вы можете использовать макрос чтобы справиться с этим. Вы можете разработать короткий макрос, который будет проходить по каждой гиперссылке в документе и удалять часть http://. Ниже приведен пример:
Sub FixHyperlinks1 () Dim hyp As Hyperlink Dim sLink As String For each hyp In ActiveDocument.Hyperlinks sLink = hyp.Address sLink = replace (strLink, "http:// www "," www ") hyp.Address = sLink Next hypEnd Sub
Однако этот подход, вероятно, не настолько всеобъемлющий, как вам хотелось бы. Это влияет только на активные гиперссылки; это не влияет на URL-адреса в виде обычного текста в вашем документе. Если вы хотите использовать более комплексный подход, вам нужно что-то, что избавит от всех гиперссылок (вероятно, они вам вообще не понадобятся в документе), а затем избавится от части http://. Вот тот, который сделает именно это:
Sub FixHyperlinks2 () 'Удалить гиперссылки с помощью ActiveDocument while .Hyperlinks.Count> 0 .Hyperlinks (1) .Delete Wend End With'Remove http://Selection .Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "http://www" .Replacement.Text = "www" .Forward = True .Wrap = wdFindContinue End With Selection.Find.Execute Replace: = wdReplaceAllEnd Sub