Vb.net 将[file]数据源与WordDocument.MailMerge一起使用

Vb.net 将[file]数据源与WordDocument.MailMerge一起使用,vb.net,vba,ms-office,ms-word,office-interop,Vb.net,Vba,Ms Office,Ms Word,Office Interop,每次发生此错误时,我都会收到一个日志文件,所以它肯定会发生,我只是无法找到如何重现它,或者它发生的原因 我将Word文档与.dat文件合并(通过vb.net),进行合并的代码很简单: document.WordDocument.MailMerge.OpenDataSource(document.MergeFilePath, wdOpenFormatText, , , False) document.MergeFilePath指向本地物理.dat文件,该文件包含供文档使用的数据源 在某些客户端上

每次发生此错误时,我都会收到一个日志文件,所以它肯定会发生,我只是无法找到如何重现它,或者它发生的原因

我将
Word
文档与.dat文件合并(通过
vb.net
),进行合并的代码很简单:

document.WordDocument.MailMerge.OpenDataSource(document.MergeFilePath, wdOpenFormatText, , , False)
document.MergeFilePath
指向本地物理.dat文件,该文件包含供文档使用的
数据源

在某些客户端上,这(间歇性)会导致错误,有些错误不同,但大多数是
异常:Word无法打开数据源。

在文档合并时,我已尝试检查以下属性,以确保在尝试设置
数据源之前,这些属性已正确设置/处于正确状态:
Application.PrintPreview
|更改了
ActiveWindow.View.Type
|(来自wdReadingView)|
选项。AllowRoadingMode

再说一次,在我这方面,一切都很好,我没有得到任何错误-虽然我知道他们正在发生

我的日志文件中包含以下内容:

  • Office版本:Office2013
  • Word视图类型:wdNormalView
  • Word打印预览:False
  • 字分配模式:False
异常详细信息: 堆栈跟踪:位于Microsoft.VisualBasic.CompilerServices.LateBinding.InternalLateCall(对象o,类型objType,字符串名称,对象[]参数,字符串[]参数名,布尔[]回写,布尔IgnoreReturn)的[PROJECT PATH]。合并[PROJECT PATH]\FILENAME]中的文档(文档和[Document Object])。vb:第695行

注意事项:

  • 我注意到它似乎只出现在Office2013上(以前是所有版本),但是 上述变更似乎已修复(2016年)
  • 我认为这与一个文档(或多个文档)被删除有关 在某个点处于
    readMode
    状态
  • 当它“锁定”某些属性时,一定会发生一些事情,因此, 我们无法更新文档上的
    数据源

非常感谢您提供的任何帮助或向正确的方向轻推。

您的dat文件是在Word使用之前由另一个进程创建的吗?@bibadia不是立即创建的,但是的-它是在同一进程中生成的,我已确认该文件创建正确,并包含正确的信息-我已获取了与用户尝试合并的文件完全相同的文件,并且我可以正确合并它们(通常在收到此错误后的第二次/第三次尝试中,用户可以成功合并)。我没有解决方案,但是想知道2013年dat文件创建者未能释放某种锁是否也是一个问题。(例如,当从Access生成数据文件时,我已经看到了许多此类报告)。现在这只影响Office 2013这一事实让我有了同样的担忧,但如何证明这一点。例如,您是否可以引入延迟(实验性地)在创建.dat的点和Word试图打开它的点之间?是什么创建了.dat?