VBA(Word):使用TextEffect绘制文本框msoTextEffectShapeArchUpCurve

问题描述 投票:1回答:2

摘要:

使用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(右)中完成的屏幕截图:

enter image description here

注意:使用AddTextEffect而不是AddTextbox实际上不是一个选项,因为与具有所选效果的文本框相比,艺术字文本会失真。

vba ms-word word-vba
2个回答
1
投票

您正在使用后期绑定(使用CreateObject),因此Excel不知道msoTextEffectShapeArchUpCurve是什么。

它是一个常数,一个值,所以你可以用9替换它。


0
投票

不幸的是,为什么Word不允许VBA在文本框中设置此文本效果,而另一方面允许它在GUI中,这仍然是一个谜。 (任何帮助或信息仍将非常感谢!)

但是,有一个工作对我有用:

  1. 在Excel文档中创建文本框并在那里应用文本效果(使用我的示例中的代码)。
  2. 然后让VBA剪切并将形状粘贴到新的Word文档中。
© www.soinside.com 2019 - 2024. All rights reserved.