【问题标题】:Auto fit a Shape in a Word document在 Word 文档中自动调整形状
【发布时间】:2019-11-21 20:14:03
【问题描述】:

如何使用 C# 或 vba (Word 2013) 在 Word 文档中自动调整 Shape

我已尝试使用 shape.Textframe.autosize 属性,但它不起作用。在 Excel 中它可以工作,但在 Word 中它会引发错误

“指定的值超出范围。”

shape.TextFrame.AutoSize = (int)Microsoft.Office.Core.MsoAutoSize.msoAutoSizeShapeToFitText;

上面的代码没有做任何事情。

shape.TextFrame2.AutoSize = Microsoft.Office.Core.MsoAutoSize.msoAutoSizeShapeToFitText;

以上代码抛出异常

"The specified value is out of range."

我需要在 Word 文件中自动调整形状以适应其中的文本。

【问题讨论】:

    标签: c# vba ms-word vsto


    【解决方案1】:

    代码在 Word 中与 Excel 或 PowerPoint 中的工作方式不同的原因是 Word 的对象模型不支持 TextFrame2 的属性。 (最近在 Word 365 中测试。)它只支持TextFrame。而AutoSize for TextFrame 只支持 True/False,不支持 MsoAutoSize 枚举。

    TextFrame.AutoSize 的文档:https://docs.microsoft.com/en-us/office/vba/api/excel.textframe.autosize

    TextFrame2.AutoSize 的文档:https://docs.microsoft.com/en-us/office/vba/api/excel.textframe2.autosize

    请注意,这些都适用于 Excel(截至此日期为 365 的最新版本,这意味着晚于 Office 2013)。对于 Word,没有 TextFrame2 文档。 Word 的对象模型接受它作为Shape 对象的属性,但如果代码尝试使用TextFrame2 的任何属性或方法,则会导致错误。例如,不能使用ActiveDocument.Shapes(1).TextFrame2.TextRange.Text

    对于 C#:记住 True 的等价物是 -1(不是 1)。 False 始终为 0。

    【讨论】:

      猜你喜欢
      • 2015-06-02
      • 2014-07-09
      • 1970-01-01
      • 1970-01-01
      • 2017-08-11
      • 2021-01-02
      • 1970-01-01
      • 2021-12-03
      • 2021-07-15
      相关资源
      最近更新 更多