Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IBM Lotus Notes嵌入式Excel对象。通过OLE读取的数据与工作簿中的数据不匹配。直到手动打开并保存工作簿_Excel_Office365_Lotus Notes_Ole_Office 2016 - Fatal编程技术网

IBM Lotus Notes嵌入式Excel对象。通过OLE读取的数据与工作簿中的数据不匹配。直到手动打开并保存工作簿

IBM Lotus Notes嵌入式Excel对象。通过OLE读取的数据与工作簿中的数据不匹配。直到手动打开并保存工作簿,excel,office365,lotus-notes,ole,office-2016,Excel,Office365,Lotus Notes,Ole,Office 2016,我们有一个Domino/Notes应用程序,其中包含数千个包含嵌入式Excel工作簿的Notes文档。迄今为止,已使用字段交换从工作簿复制数据。这已被证明是不可靠的,我目前正在编写一个代理,通过OLE进行数据复制。(是的,它可能由于与Field Exchange相同的原因而失败,但至少通过这种方式,它是显而易见的,并且可以标记/提示重试) 问题在于,通过OLE读取的某些数据(特别是日期)与嵌入工作簿中的数据不匹配。但是,如果手动打开并保存工作簿,则可以正确读取。 当我手动打开工作簿时,我可以看到

我们有一个Domino/Notes应用程序,其中包含数千个包含嵌入式Excel工作簿的Notes文档。迄今为止,已使用字段交换从工作簿复制数据。这已被证明是不可靠的,我目前正在编写一个代理,通过OLE进行数据复制。(是的,它可能由于与Field Exchange相同的原因而失败,但至少通过这种方式,它是显而易见的,并且可以标记/提示重试)

问题在于,通过OLE读取的某些数据(特别是日期)与嵌入工作簿中的数据不匹配。但是,如果手动打开并保存工作簿,则可以正确读取。 当我手动打开工作簿时,我可以看到预期的数据。但是,如果我不保存Notes文档,代理将永远无法读取正确的数据

当前使用Office 2016,原始的宏启用嵌入Excel对象是使用Excel 2007创建的,即Class=Excel.SheetMacroEnabled.12

通过Excel的Value2函数读取单元格

Dim Value As Variant
Value = handle.Application.Range("example").Value2
然后,从单元格返回的值将根据预期的数据类型进行转换。 使用调试器进行检查时,可以看到,即使在执行任何日期转换之前,某些日期值也不正确


我不确定这是Domino/Notes问题还是Excel版本12到16的问题。但在目前看来,两者都是可能的

你真的是作为一个代理而不是作为Notes表单上的动作按钮中包含的事件代码来写的吗?嗨,Richard。是的,是一名特工。它读取包含嵌入工作簿的所有文档。它的目的是检查以前保存的文档字段是否已从工作簿中正确更新。嗨,Richard。是的,是一名特工。它读取包含嵌入工作簿的所有文档。其目的是检查以前保存的文档字段是否已从工作簿中正确更新。表单目前仍然使用字段交换,但一旦代理能够正常运行,将被OLE代码所取代。OLE本质上是一种前端技术。你是怎么运行这个代理的?我非常确定它必须在客户端,而不是服务器中。你能发布代码吗?是的,代理在安装了Excel 2016的客户机上运行,ATM。代理仅使用Notes.Document类。也就是说,不是UI类,所以它可能在安装了Excel的服务器上运行,但这不是我尝试过或需要做的事情。我想先让代理在客户端上正常工作,然后探索在服务器上运行它会更容易,因为它将更频繁地运行。谢谢