如何解决Microsoft.Office.Interop.Word“打开此文档将运行以下SQL命令”
在使用 Word 中的邮件合并功能重新编写一些代码时,在打开我保存的 Word 文档后,我得到以下信息。此代码使用 Microsoft.Office.Interop.Word
。
我期望的是,在将我的数据文件 (.txt) 合并到模板文件 (.dot) 中,然后调用 SaveAs 方法后,我将能够打开 word 文档而无需访问数据源,在本例中为 .txt 文件。
public void MergeAndSaveAs(string template_path,string datasource_path,string saveAsFilePath = "")
{
// Constants
int wdFormatXMLDocument = 12;
int wdSendToNewDocument = 0;
string filePath = saveAsFilePath.Remove(saveAsFilePath.LastIndexOf("."));
// Extract the MailMerge property into an object
Object wrdMailMerge = this.objDocument.GetType().InvokeMember("MailMerge",BindingFlags.GetProperty,null,this.objDocument,new Object[] { });
this.objAppWord.GetType().InvokeMember("Selection",this.objAppWord,new Object[] { });
// Open the data source and point to the source file (.txt)
wrdMailMerge.GetType().InvokeMember("OpenDataSource",BindingFlags.InvokeMethod,wrdMailMerge,new Object[] { datasource_path });
// Set the destination
wrdMailMerge.GetType().InvokeMember("Destination",BindingFlags.SetProperty,new Object[] { wdSendToNewDocument });
// Execute the Mail merge command
wrdMailMerge.GetType().InvokeMember("Execute",new Object[] { false });
try
{
this.objDocument.GetType().InvokeMember("SaveAs",new Object[] { filePath,wdFormatXMLDocument });
this.objDocument.GetType().InvokeMember("Saved",new Object[] { true });
}
catch (Exception e)
{
string error = e.Message;
}
finally
{
this.objDocument.GetType().InvokeMember("Close",new Object[] { false });
this.objDocument = null;
}
}
一个新的 Word 文档保存在我指定的位置,但它不是一个普通的 Word 文档,因为它需要与源文件的持续连接。
如何以编程方式将合并的文件保存到不需要数据源连接的新 Word 文档中?
更新
就目前而言,我的代码还提示我保存文件。如果我在对话框上单击是,它会要求我更新格式。也许这也需要以编程方式完成?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。