У меня есть электронная таблица, которая используется для отслеживания заказов на работу. Первый столбец листа имеет номера, начинающиеся с 14-0001 и продолжающиеся последовательно вплоть до конца. Цифры были гиперссылки на .XLS их соответствующего рабочего порядка (например, ячейка, содержащая 14-0001 ссылки на Z: \ WorkOrders \ 14-0001-Имя задачи \ 14-0001-Task Name.xls)Сценарий для исправления сломанных гиперссылок в Excel
Проблема это мой компьютер разбился, и когда Excel восстановить файл все гиперссылка изменены с
**"Z:\blah blah\WorkOrders\14-****-Task Name\14-****-Task Name.xls"**
в
**"C:\Users\blahblah\WorkOrders\14-****-Task Name\14-****-Task Name.xls"**
Там сотни записей, так что я надеюсь, что я мог запустить сценарий, чтобы исправить все гиперссылок.
Heres скрипт я нашел в Интернете, который из чего я понял, что должен делать то, что я хочу, но когда я запускаю скрипт из окна VB в Excel я получаю «Ошибка компиляции: Аргумент не факультативное» и подчеркивает Sub CandCHyperlinx()
Код:
Option Explicit
Sub CandCHyperlinx()
Dim cel As Range
Dim rng As Range
Dim adr As String
Dim delstring As String
'string to delete: CHANGE ME! (KEEP quotes!)
delstring = "C:\Users\***\AppData\Roaming\Microsoft\Excel\"
'get all cells as range
Set rng = ActiveSheet.UsedRange
'ignore non hyperlinked cells
On Error Resume Next
'check every cell
For Each cel In rng
'skip blank cells
If cel <> "" Then
'attempt to get hyperlink address
adr = cel.Hyperlinks(1).Address
'not blank? then correct it, is blank get next
If adr <> "" Then
'delete string from address
adr = Application.WorksheetFunction.Substitute(adr, delstring)
'put new address
cel.Hyperlinks(1).Address = adr
'reset for next pass
adr = ""
End If
End If
Next cel
End Sub
Является ли это даже правильный сценарий? Что я делаю не так?
'Substitute' - это то, что подсвечено с ошибкой, и это потому, что он принимает три аргумента не два. [См. Эту ссылку] (http://msdn.microsoft.com/en-us/library/office/ff194878%28v=office.15%29.aspx) для получения дополнительной информации. Попробуйте это: 'adr = Application.WorksheetFunction.Substitute (adr, delstring," C: \ Users \ ")' –
Можете ли вы не применять Find/Replace? – pnuts
@pnuts Я думал, что слишком, но 'Find' не работал на гиперссылках, или я должен сказать, что он не работал вне VBA. –