我目前正面临有关MS Word的MailMerge功能的问题。
我不得不将旧的VBA应用程序重写为C#。我几乎完成了这件事。新应用程序正常工作。 除了一个我无法摆脱的PopUp。
所以我过去2天一直在网上浏览,因为我们的客户不希望弹出,因为旧应用程序中没有。 但是我找不到合适的解决方案。除了少数人提到可能连接字符串不正确。但我发现没有资源告诉我它应该如何看待C#代码
这就是它在旧应用程序中的外观:
TARGET_LINK_LIBRARIES
我显然已尝试使用该连接密钥并在我的代码中使用它。但它并没有阻止弹出。我也试过玩这个子类型。但它要么不改变任何东西,要么抛出格式异常。
这是什么在C#中工作:
Word.ActiveDocument.MailMerge.OpenDataSource Name:=strSourceDoc, ConfirmConversions:=False, _
ReadOnly:=False, LinkToSource:=True, AddToRecentFiles:=False, PasswordDocument:="", _
PasswordTemplate:="", WritePasswordDocument:="", WritePasswordTemplate:="", _
Revert:=False, Format:=wdOpenFormatAuto, Connection:= _
"Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=" & strSourceDoc & ";Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";" _
, SQLStatement:="SELECT * FROM `Tabelle1$`", SQLStatement1:="", SubType:= _
wdMergeSubTypeAccess
如何更改连接字符串以防止弹出窗口显示?
答案 0 :(得分:0)
所以我找到了一个解决方案,它在某种程度上起作用。
实际问题(至少从我测试过的)是文件扩展名而不是连接字符串。我使用的是.xlsx文件,作为我的源文档。但是当我用一些xls文件测试时,弹出窗口消失了。
我刚刚参加了#34;谷歌会议"找出xls和xlsx之间的差异。
所以我可以更改我的代码以仅使用xls文件。问题解决了。但对我来说仍然是一个令人不快的解决方案。
如果你想测试一下,可能会让它与xlsx一起工作。下面是一些要测试的代码(只需在winforms按钮上单击它就可以绑定它)
class PerformMailMerge
{
Word.Application mailApp;
Object oMissing = System.Reflection.Missing.Value;
Object oFalse = false;
string _path = @"Your Path to Excel File";
string savePath = @"Your Path to Word Document";
public void mailMerge2()
{
mailApp = new Word.Application();
mailApp.Visible = false;
mailApp.Documents.Add();
mailApp.ActiveDocument.MailMerge.MainDocumentType = Word.WdMailMergeMainDocType.wdMailingLabels;
//OpenDataSource:
mailApp.ActiveDocument.MailMerge.OpenDataSource(_path,
Word.WdOpenFormat.wdOpenFormatAllWordTemplates, true, true, true,
ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, "TABLE Tabelle1$", "SELECT * FROM `Tabelle1$",
ref oMissing, ref oMissing,
Word.WdMergeSubType.wdMergeSubTypeWord2000);
mailApp.ActiveDocument.SaveAs2(savePath);
mailApp.ActiveDocument.Close();
mailApp.Quit();
}
}