C# 使用Word.Interop时如何正确访问AttachedTemplate?
我正在尝试使用C# 使用Word.Interop时如何正确访问AttachedTemplate?,c#,ms-word,interop,C#,Ms Word,Interop,我正在尝试使用Microsoft.Office.Interop.Word库从我的C#应用程序创建Microsoft Word文档。我使用一个模板文件来保存几个构建块,并用它们构建一个文档,如下所示: using Word = Microsoft.Office.Interop.Word Word.Application wdApplication = null; dynamic wdDocument = null; try { wdApplication = new Word.Applic
Microsoft.Office.Interop.Word
库从我的C#应用程序创建Microsoft Word文档。我使用一个模板文件来保存几个构建块,并用它们构建一个文档,如下所示:
using Word = Microsoft.Office.Interop.Word
Word.Application wdApplication = null;
dynamic wdDocument = null;
try {
wdApplication = new Word.Application();
wdDocument = wdApplication.Documents.Add(Properties.Settings.Default.Template);
wdDocument.AttachedTemplate.BuildingBlockEntries("Agenda.Header").Insert(wdDocument.Paragraphs.Last().Range);
// ...
} catch { }
这样一切都很好。问题是因为我将wdDocument
声明为dynamic
我没有得到任何IntelliSense提示,否则会节省大量时间和精力
但是,当我尝试将wdDocument
声明为Word.Document
时,出现以下错误:
错误CS1545语言不支持属性、索引器或事件“\u Document.AttachedTemplate”;尝试直接调用访问器方法“\u Document.get\u AttachedTemplate()”或“\u Document.set\u AttachedTemplate(ref object)”
我还尝试将wdDocument
声明为Microsoft.Office.Tools.Word.Document
,但这只会在wdApplication
和wdDocument
之间引入类型转换错误
声明文档类型或访问存储在所附模板中的构建块的正确方法是什么?非常感谢@mjwills让我走上了正确的道路。这是我用构建块创建Word文档的最后一段代码:
using Word = Microsoft.Office.Interop.Word;
public class Agenda {
public static void Create() {
Word.Application wordApplication = null;
Word.Document wdDocument = null;
Word.Template wdTemplate = null;
Word.BuildingBlock wdBuildingBlock = null;
object paramBBCategory = "Agenda";
object paramBBName = "Header";
try {
wordApplication = new Word.Application();
wdDocument = wordApplication.Documents.Add(Properties.Settings.Default.Template);
wdTemplate = (Word.Template)wdDocument.get_AttachedTemplate();
wdBuildingBlock = wdTemplate
.BuildingBlockTypes.Item(Word.WdBuildingBlockTypes.wdTypeQuickParts)
.Categories.Item(ref paramBBCategory)
.BuildingBlocks.Item(ref paramBBName);
wordBuildingBlock.Insert(wdDocument.Paragraphs.Last.Range);
} catch { }
}
}
请参阅MSDN上的这篇伟大的文章以供参考:@mjwills我已经看到了该链接,但不幸的是它没有帮助。它是关于设置附加的模板,而不是访问其属性。无论如何谢谢你!因此,
get\u AttachedTemplate
对您不起作用吗?您可以分享您尝试使用get\u AttachedTemplate()
时遇到的编译器错误吗?@mjwills当然可以。当我尝试使用get_AttachedTemplate
时,我在第13行遇到以下错误:CS1955错误非发票成员模板。BuildingBlockEntries不能像方法一样使用。
@mjwills感谢您的时间和努力!