Резюме:
Используя Visual Basic для приложений (VBA), я пытаюсь нарисовать текстовое поле и применить к нему TextEffect msoTextEffectShapeArchUpCurve
.
Это прекрасно работает при рисовании на листе Excel, но не будет работать в документе Word (хотя это можно сделать таким же образом с помощью графического интерфейса).
Итак, у меня есть файл Excel, из которого запускается скрипт. Этот скрипт создает новый документ Word и рисует внутри него фигуры.
Пример:
Dim objWord
Dim objDoc
Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Add
objDoc.Activate
With ActiveDocument.Shapes.AddTextbox( _
msoTextOrientationHorizontal, _
50, _
50, _
200, _
200 _
)
.TextFrame.TextRange.text = "Some text to curve"
.TextEffect.PresetShape = msoTextEffectShapeArchUpCurve '<-- error
End With
Проблема:
Код дает Error 4652: Invalid type of drawing object for this command
.
Согласно документации это должно работать. (И это можно сделать с помощью графического интерфейса, хотя при записи действий в макросе код не создается).
Я что-то не так делаю? И как я могу это исправить?
Скриншот того, как это должно выглядеть (слева) и как это делается в графическом интерфейсе (справа):
![enter image description here](https://i.stack.imgur.com/cC9Qp.jpg)
Примечание. Использование AddTextEffect
вместо AddTextbox
на самом деле не вариант, поскольку текст WordArt искажается по сравнению с текстовым полем с выбранным эффектом.