В пользовательском интерфейсе Excel (также PowerPoint и Word) можно назначить гиперссылку для узла SmartArt или текст в узле:
![Add hyperlink to SmartArt in UI](https://i.stack.imgur.com/PtaSQ.png)
Запись этих шагов в макросе приводит к пустой процедуре.
Попытка использовать логику с объектной моделью не дает полезного результата (см. Код ниже). Я попробовал следующие три подхода:
- A
SmartArtNode
имеет свойство Shapes
, и можно извлечь объект Shape
... Но тип принадлежит объектной модели Office (Office.Shape
) и не может быть принужден (что я могу найти) к Excel.Shape
(или к PowerPoint.Shape
). Попытка присвоить его Excel.Shape
- Set xlShape = nd1.Shapes(1)
- приводит к
Ошибка времени выполнения '13' Несоответствие типов
Попытка добавить гиперссылку к
Office.Shape
приводит к
Ошибка времени выполнения -2147417848 (80010108)
Ошибка автоматизации
Вызванный объектотключился от своих клиентов.
Затем я попытался выбрать узел и добавить гиперссылку к
Application.Selection
(
TypeName(Application.Selection)
возвращает
Shape
), что вернуло
Ошибка времени выполнения 1004
Приложение-определенная или определенная объектом ошибка
Как добавить гиперссылку на узел SmartArt?
Sub AddHyperlinkToSmartArtNode()
Dim sa As SmartArt
Dim ws As Worksheet
Dim nd1 As SmartArtNode
Dim shp As Office.Shape
Dim shpx
Dim rng As TextRange2
Set ws = ActiveSheet
Set sa = ws.Shapes(1).SmartArt
Set nd1 = sa.Nodes(1)
'Dim xlShape As Excel.Shape
'Set xlShape = nd1.Shapes(1)
'Run-time error '13'
'Type mismatch
Set shp = nd1.Shapes(1)
'ws.Hyperlinks.Add shp, "www.google.com"
'Run-time error -2147417848 (80010108)
'Automation error
'The object invoked has disconnected from its clients.
Set rng = shp.TextFrame2.TextRange
rng.Select
Set shpx = Application.Selection
ws.Hyperlinks.Add shpx, "www.google.com"
'Run-time error 1004
'Application-defined or object-defined error
End Sub