c# - Office Interop 12 在 MailMerge.OpenDataSource 上失败
问题描述
我有一个 ac# 项目,它使用Office.Interop版本 12 和 Office 2013在 dotx 文件和 xls 文件之间进行邮件合并。它在生产中工作但不在开发中,相同的代码在 Interop 版本 14 和 Office 2016 上运行,但我不能更改服务器版本。错误显示“ HRESULT: 0x800706BE ”并且没有更多信息。我尝试了一些文件夹访问(每个人都可以完全访问),安装.net framework 1.1,更改组件服务,所有这些都没有成功。有没有人有解决方案的想法?
在这里失败:
Doc.MailMerge.OpenDataSource(Name: fileName, SQLStatement: sqlStmt);
解决方案
目前尚不清楚传递给该OpenDataSource
方法的实际参数是什么......
无论如何,尝试使用 VBA 宏来检查代码的工作方式,而不依赖于 .net 框架和其他东西。此示例创建一个新的主文档并附加名为 的 Excel 工作表Names.xls
。Connection 参数从名为“Sales”的范围中检索数据。
Dim docNew As Document
Set docNew = Documents.Add
With docNew.MailMerge
.MainDocumentType = wdCatalog
.OpenDataSource Name:="C:\Documents\Names.xls", _
ReadOnly:=True, _
Connection:="Sales"
End With
推荐阅读
- python - 黑帽 Python - 数据包嗅探器 - 调试
- java - Microsoft TPM Tss.java 实现 Samples.java 给出错误
- angular - 在管道中使用 flatMap
- amazon-web-services - Cloudfront https 在 chrome 和 firefox 中重定向,但不是 safari
- django - 同一项目中具有不同身份验证的两个不同 django 应用程序
- snowflake-cloud-data-platform - Azure 数据工厂托管实例 -> 带有转义字符的雪花文本
- seo - 在 Rendertron 的 config.json 中添加宽度和高度选项不会改变渲染页面的尺寸
- flutter - 参数类型“对象?” 不能分配给参数类型“列表”
- list - 空列表头
- node.js - 使用 NodeJS 的回调和事件发射器功能