У Венди есть один рабочий лист Excel, содержащий более 1200 гиперссылок на файлы TIFF. (Это гиперссылки, а не обычные ссылки.) Excel завис, и его пришлось закрыть, поэтому Эмили использовала автосохраненные файлы, чтобы восстановить ранее сохраненный файл. Теперь все ранее работавшие гиперссылки не работают. У нее были гиперссылки на изображения на общем сетевом диске, но автосохранение изменило гиперссылки на диск C :. Она задается вопросом, есть ли простой способ исправить их обратно на общий сетевой диск.

На первый взгляд может показаться, что вы можете использовать обычную функцию Excel «Найти и заменить», чтобы найти обозначение жесткого диска (как в file: // c 🙂 и заменить его сетевым диском (как в file: // shareddrive). Проблема в том, что этот подход решает только часть проблемы — он изменяет только отображаемую часть гиперссылки, но не саму гиперссылку. Единственный способ добраться до самой гиперссылки — это использовать макрос.

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

Sub FixHyperlinks1()

Dim wks As Worksheet     Dim hl As Hyperlink     Dim sOld As String     Dim sNew As String

Set wks = ActiveSheet     sOld = "c:\"      sNew = "S:\Network\"

For Each hl In wks.Hyperlinks         hl.Address = Replace(hl.Address, sOld, sNew)

Next hl End Sub

Все, что вам нужно сделать, это изменить значения, присвоенные переменным sOld и sNew. Если вы получаете сообщение об ошибке при попытке запустить макрос — ошибка строки, содержащей функцию «Заменить», — это потому, что функция «Заменить» доступна не во всех версиях Excel. В этом случае вместо этого следует использовать следующий макрос:

Sub FixHyperlinks2()

Dim wks As Worksheet     Dim hl As Hyperlink     Dim sOld As String     Dim sNew As String

Set wks = ActiveSheet     sOld = "c:\"      sNew = "S:\Network\"

For Each hl In wks.Hyperlinks         hl.Address = Application.WorksheetFunction. _             Substitute(hl.Address, sOld, sNew)

Next hl End Sub

Обратите внимание, что единственная разница заключается в использовании функции «Заменить лист».

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

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

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

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

Этот совет (8622) применим к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и более поздние версии) здесь:

link: / excelribbon-Changing_Huge_Numbers_of_Hyperlinks [Изменение огромного числа гиперссылок].