C#初始化程序用于转换VB&With / End With语句

时间:2016-05-01 23:59:46

标签: c# vba ms-word

我正在将Word VBA宏转换为C#作为我正在编码的插件的一部分。

我研究了将With / End With VB块转换为C#的选项。我继续尝试转换我的VBA PageSetup设置:

With ActiveDocument.PageSetup
    .Orientation = wdOrientPortrait
    .TopMargin = InchesToPoints(0.98)
    .BottomMargin = InchesToPoints(0.98)
    .LeftMargin = InchesToPoints(0.92)
    .RightMargin = InchesToPoints(0.92)
    .Gutter = InchesToPoints(0)
    .HeaderDistance = InchesToPoints(0.49)
    .FooterDistance = InchesToPoints(0.49)
    .PageWidth = InchesToPoints(8.5)
    .PageHeight = InchesToPoints(11)
    .LayoutMode = wdLayoutModeDefault
End With

所以使用@ JohnSkeet对this question的回答,我写了我的C#代码:

var oPageSetup = new Word.PageSetup
{
    Orientation = Word.WdOrientation.wdOrientPortrait,
    TopMargin = (float)(0.98 * 72),
    BottomMargin = (float)(0.98 * 72),
    LeftMargin = (float)(0.92 * 72),
    RightMargin = (float)(0.92 * 72),
    Gutter = (float)(0),
    HeaderDistance = (float)(0.49 * 72),
    FooterDistance = (float)(0.49 * 72),
    PageWidth = (float)(8.5 * 72),
    PageHeight = (float)(11 * 72),
    LayoutMode = Word.WdLayoutMode.wdLayoutModeDefault
};

然而,当这样做时,我得到以下编译器错误:

  

无法创建抽象类或接口的实例' Microsoft.Office.Interop.Word.PageSetup'

有人可以告诉我我做错了什么以及如何纠正我的代码?提前谢谢。

1 个答案:

答案 0 :(得分:2)

With ActiveDocument.PageSetup不会创建PageSetup的实例。它使用名为ActiveDocument的{​​{1}}属性。因为没有对象实例化,所以不能使用Jon Skeet所指的对象初始化器语法。相反,您每次都必须重复变量名称:

PageSetup