Установить текст SmartArt, когда слайд-шоу активно - PullRequest
0 голосов
/ 15 февраля 2019

Используя PowerPoint 2016, я пишу макрос, который позволяет пользователю вводить данные в живую презентацию, используя пользовательские формы и текстовые поля.Это работает хорошо, за исключением случаев, когда я пытаюсь отобразить текст в SmartArt.Следующий макрос иллюстрирует проблему:

Sub writeToSmartArt()
    Dim artShape As Shape
    Set artShape = ActivePresentation.Slides(maalSlide).Shapes("Diagram")
    MsgBox artShape.SmartArt.Nodes(1).Nodes(1).TextFrame2.TextRange.Text
    artShape.SmartArt.Nodes(1).Nodes(1).TextFrame2.TextRange.Text = "testing" 
End Sub

Подпрограмма устанавливает форму SmartArt в переменную artShape и сначала распечатывает содержимое указанного узла в MsgBox.На следующем шаге я устанавливаю для свойства text новое значение.Все работает нормально, пока презентация не активна.Я могу вручную запустить саб, и все ведет себя как ожидалось.Однако, когда слайд-шоу запущено, я получаю следующее сообщение об ошибке при попытке записи в узел SmartArt:

    Run-time error '-2147467259 (80004005)':
    Method 'Text' of object 'TextRange2' failed

Отображение текущего содержимого в MsgBox все еще работает.Как я могу преодолеть эту проблему?

1 Ответ

0 голосов
/ 17 февраля 2019

Не уверен, почему вы получаете сообщение об ошибке в режиме слайд-шоу.Тем не менее, обходной путь заключается в использовании метода узла Shape() для прямого доступа к фигуре, а не к самому узлу, например: artShape.SmartArt.Nodes(1).Nodes(1).Shapes(1).TextFrame2.TextRange.Text = "testing".Надеюсь, это поможет!

...