摘要:
使用Visual Basic for Applications(VBA),我正在尝试绘制一个Textbox并将TextEffect msoTextEffectShapeArchUpCurve
应用于它。
这在Excel工作表中绘制时工作正常,但在Word文档中不起作用(尽管可以使用GUI以相同的方式完成)。
所以我有一个运行脚本的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
。根据the documentation,这应该工作。 (并且可以使用GUI完成,但在宏中记录操作时不会生成代码..)
难道我做错了什么?我该如何解决这个问题?
它应该如何(左)以及如何在GUI(右)中完成的屏幕截图:
注意:使用AddTextEffect
而不是AddTextbox
实际上不是一个选项,因为与具有所选效果的文本框相比,艺术字文本会失真。
您正在使用后期绑定(使用CreateObject),因此Excel不知道msoTextEffectShapeArchUpCurve
是什么。
它是一个常数,一个值,所以你可以用9
替换它。
不幸的是,为什么Word不允许VBA在文本框中设置此文本效果,而另一方面允许它在GUI中,这仍然是一个谜。 (任何帮助或信息仍将非常感谢!)
但是,有一个工作对我有用: