【问题标题】:Cannot set Word Style's Base Style From C#无法从 C# 设置 Word 样式的基本样式
【发布时间】:2013-08-31 11:47:19
【问题描述】:

Microsoft.Office.Interop.Word 版本 14.0.0.0。 .NET 4.0 VS 2010。

MS Word API 的 Style 类有一个 BaseStyle 属性,可用于设置样式的基本(基于)样式。该属性在 VBA 中对我来说很好。

但是,在使用 Word interopt 的 C# 中,没有 BaseStyle 属性。但是,有两个(据我所知没有记录)函数 set_BaseStyle() 和 get_BaseStyle()。

当我调用 set_BaseStyle() 时,我得到一个带有消息的 COMException:

“此命令不可用。”

我认为这意味着COM接口不支持程序(命令)。但为什么?为什么会出现在智能感知和编译中?有解决方法吗?

【问题讨论】:

  • 您尝试将 BaseStyle 设置为什么?
  • 我尝试了一个样式名称和一个样式对象。我认为问题不在于分配的值。它是一个 COM 异常,因为我认为该函数不是由 COM 对象定义的。
  • 奇怪,它看起来有记录。今晚我去看看。

标签: c# ms-word styles interop


【解决方案1】:

这个简单的例子适用于我的机器(VS 2012,Office 2007)

        Application application = new Application {Visible = true};

        string styleName1 = "Heading 1";
        object styleNameObject1 = styleName1;

        string styleName2 = "Heading 2";
        object styleNameObject2 = styleName2;

        var document = application.Documents.Add();
        document.Select();

        application.Selection.set_Style(ref styleNameObject2);
        Style style = (Style)application.Selection.get_Style();
        Style baseStyle = style.get_BaseStyle();
        style.set_BaseStyle(ref styleNameObject1);

        application.Selection.Range.Text = "This is the title";
        application.Quit(false);

所以问题可能在于您的设置。该消息相当模糊,它说单词不能做任何事情,其他示例请查看C# and Word2010 : DeleteAllComments throws "This command is not available."search and replace in Word documents via .NET automation

文件是只读的吗?其他样式或更简单的文件(例如我的示例)是否会发生这种情况? Word 中是否允许使用宏?

【讨论】:

  • 该文件不是只读的。 C# 代码成功地对文件的样式进行了大量更改。更改字体、缩进、编号、项目符号等。但我不能更改样式的基本样式。我已经尝试了几种用户定义的样式(我不想改变“正常”的说法)。
  • @user2735420 - 我提供的示例是否有效?如果是这样,您可能在做一些在 word 眼中“非法”的事情。你能更详细地描述你在做什么吗?你要换什么风格?您要设置什么基本样式?
【解决方案2】:

我发现了问题。

Vadim 发布的示例代码帮了大忙,因为它确实有效,我慢慢地转换成我的代码并最终破坏了它,它们来回移动,直到我找到问题所在。

但是,我无法解释我发现了什么!

当我使用 Application.Documents.Open() 打开(现有)文档时,我指定了所有参数。事实证明,如果我为 isvisible 参数指定 false (0),则代码将失败。如果我选择 true (-1),它会起作用。

请注意,无论哪种情况,我都可以对文档进行 100 次其他更改。由于某种原因,如果它不可见,我无法更改基本样式。

奇怪。

感谢您的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-11
    • 2020-11-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2012-02-02
    相关资源
    最近更新 更多