我正在将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'
有人可以告诉我我做错了什么以及如何纠正我的代码?提前谢谢。
答案 0 :(得分:2)
With ActiveDocument.PageSetup
不会创建PageSetup
的实例。它使用名为ActiveDocument
的{{1}}属性。因为没有对象实例化,所以不能使用Jon Skeet所指的对象初始化器语法。相反,您每次都必须重复变量名称:
PageSetup