У меня есть электронная таблица, которая содержит несколько гиперссылок, некоторые из которых являются формами. Я пытаюсь пройти через них, чтобы увидеть, где каждый из них указывает, чтобы позже удалить некоторые из них. Для гиперссылок, содержащихся в клетках, следующий цикл работал:Как ссылаться на гиперссылки формы с помощью Excel VBA
Sub a()
Dim ws As Worksheet, hl As Hyperlink, o As Shape
For Each ws In Worksheets
For Each hl In ws.Hyperlinks
Debug.Print hl.Address
Next
Next
End Sub
Но это, кажется, пропустить все гиперссылки, происходящие из форм или других объектов.
Есть ли способ, которым я могу контактировать с ними? Я пробовал такие вещи, как:
Sub a()
Dim ws As Worksheet, hl As Hyperlink, o As Shape
For Each ws In Worksheets
For Each o In ws.Shapes
For Each hl In o.Hyperlinks
Debug.Print hl.Address
Next
Next
Next
End Sub
Но это дает мне сообщение об ошибке выполнения 91 на debug.print
линии. Гуглинг не дает мне ничего. Итак, есть ли у кого-нибудь из вас представление о том, как печатать адреса?
А, я вижу. Я также попытался с 'o.HyperLink.Address', но также получил ошибку. Я должен был подумать, что это сделает, если не найдет гиперссылку. Пробовав ваше решение, похоже, что в других объектах есть ошибочные гиперссылки, кроме форм. Не могли бы вы узнать, какие объекты могут содержать их? – eirikdaude
* Ничего * в слое чертежа листа - это форма - в чем проблема? – Rory
В листе есть некоторые сломанные ссылки, но я не могу понять, где они находятся (видимо, не в «Worksheets.Hyperlinks» или «Shape.Hyperlink'). Причина, по которой я хочу знать, чем является родительский объект ссылок, заключается в том, что я * могу * хотеть удалить родительский объект, в зависимости от того, что это такое. Просто использовал «Hyperlink.Address», чтобы определить, удалось ли мне найти объекты или нет. – eirikdaude