我有本地机器(即开发)和虚拟机(即生产)。在2之间,我使用Access,Excel和Lotus Notes开发和维护一些自动报告。
最近,我的任务是一份与现有报告非常相似的新报告。所以,我只是将生产中相应的Access文件复制回Development,然后重新编写它。它失败了。通过一些试验和错误,我把它缩小到这个片段:
Option Compare Database
Option Explicit
Global NtSession As lotus.NotesSession
Sub Main()
Set NtSession = CreateObject("Notes.NotesSession")
...
End Sub
同样,这段代码在Production中运行良好,但是当我尝试在我的开发中运行时它会中断(我在CreateObject上遇到“Type Mismatch”错误)。解决这个问题最简单的方法就是在Production中开发我的报告,但这种目的无法实现,更不用说它以前在本地机器上工作的奇怪之处,现在却没有。那么,为什么这会在我的本地机器(即Dev)上抛出错误,而不是在虚拟(即生产)中呢?
答案 0 :(得分:2)
Lotus.NotesSession is not the same as Notes.NotesSession。您可能只需要将CreateObject行更改为:
Set NtSession = CreateObject("Lotus.NotesSession")
答案 1 :(得分:1)
根据Ken的回复,我建议您决定是否要延迟或早期绑定。
Global NtSession As Object
Set NtSession = CreateObject("Lotus.NotesSession")
或
Global NtSession As lotus.NotesSession
Set NtSession = New Lotus.NotesSession
我只是没有看到混合两者的价值,如
Global NtSession As lotus.NotesSession
Set NtSession = CreateObject("Lotus.NotesSession")
答案 2 :(得分:0)
检查COM对象nlsxbe.dll是否已在开发计算机上安装并正确注册。也许取消注册并重新注册它只是为了确定。请在Google上搜索“nlsxbe.dll注册”,以获取有关该模块的问题的更多提示,该模块应作为Notes客户端安装的一部分进行安装(但可能未注册)。