Добавить гиперссылку на узел SmartArt - PullRequest
3 голосов
/ 23 октября 2019

В пользовательском интерфейсе Excel (также PowerPoint и Word) можно назначить гиперссылку для узла SmartArt или текст в узле:

Add hyperlink to SmartArt in UI

Запись этих шагов в макросе приводит к пустой процедуре.

Попытка использовать логику с объектной моделью не дает полезного результата (см. Код ниже). Я попробовал следующие три подхода:

  1. 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...