Показать полную графическую версию : Изменение пути гиперссылок Excel2010
oleg_nojab
31-10-2016, 08:55
Добрый день уважаемые форумчане!
Проблема в следующем, имеется файлик Excel с множеством гиперссылок которые ссылаются на файлы в папке (\\10.52.1.1\Стройки\Проекты), возникла острая необходимость подпапку "Проекты" вытащить из папки "Стройки" и поместить в корень (\\10.52.1.1\Проекты), помогите с написанием скрипта по изменению гиперссылок во всем документе. Просьба не отправлять в гугл и прочие форумы, все что было найдено в сети, не сработало. Заранее спасибо за помощь.
oleg_nojab, попробуйте код ниже. Код заменит ссылки на одном активном листе.
Предварительно сделайте резервную копию вашей книги, во избежание потери данных.
Public Sub HL_repl()
Dim HLobj As Hyperlink
For Each HLobj In ActiveSheet.Hyperlinks
HLobj.Address = Replace(HLobj.Address, "\\10.52.1.1\Стройки\Проекты", "\\10.52.1.1\Проекты")
Next HLobj
End Sub
На WSH (не проверялось):
Option Explicit
Const xlPart = 2
Dim objWorkSheet
With WScript.CreateObject("Excel.Application")
With .Workbooks.Open("C:\Мои проекты\0023\Книга1.xls")
.Parent.DisplayAlerts = False
For Each objWorkSheet In .Worksheets
objWorkSheet.UsedRange.Replace "\\10.52.1.1\Стройки\Проекты", "\\10.52.1.1\Проекты", xlPart
Next
.Parent.DisplayAlerts = True
.Save
.Close
End With
.Quit
End With
WScript.Quit 0
oleg_nojab
31-10-2016, 11:55
Public Sub HL_repl()
Dim HLobj As Hyperlink
For Each HLobj In ActiveSheet.Hyperlinks
HLobj.Address = Replace(HLobj.Address, "\\10.52.1.1\Стройки\Проекты", "\\10.52.1.1\Проекты")
Next HLobj
End Sub »
Выдает ошибку "Run-time error 13: Type mismatch"
Выдает ошибку "Run-time error 13: Type mismatch" »
Покажите скриншот вместе с данным кодом в окне редактора VBA. Было бы неплохо также приложить образец Рабочей книги с гиперссылками, упаковав его в архив.
На WSH (не проверялось): »
Iska, это в редакторе VBA нужно запускать? Не то чтобы я что-нибудь понял, просто хоть понять, в какую сторону идти...
Iska, это в редакторе VBA нужно запускать? »
Нет. Сохранить в файл с расширением .vbs и запустить двойным щелчком из Проводника (хост WScript.exe). Я лично предпочитаю консоль Far Manager'а, посему у меня по умолчанию («CScript.exe //H:CScript») используется консольный хост CScript.
Ваш код, кстати, как я полагаю, более правильный.
oleg_nojab
01-11-2016, 07:46
Пробую на тестовом файле, ошибка сохраняется140970
oleg_nojab, к сожалению, не видно место возникновения ошибки. Упакуйте Ваш тестовый файл в архив и приложите к сообщению, либо выложите на RGhost или Яндекс.Диск.
oleg_nojab
02-11-2016, 07:15
Всем спасибо, проблема решена, скрипт взят с сайта www.vba-excel.ru
140998
«On Error Resume Next» надо выкинуть (и вообще забыть его использование подобным образом как страшный сон). Перед InputBox проверять наличие выделения (более одной ячейки) и использовать его в качестве умолчания. Остальное, в принципе, сойдёт.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC