为什么这段代码会中断?

| 我有一个本地计算机(即开发)和一个虚拟机(即生产)。在这两者之间,我使用Access,Excel和Lotus Notes开发并维护了一些自动报告。 最近,我受命编写一份与现有报告非常相似的新报告。因此,我只是将适当的Access文件从生产中复制回开发中,以对其进行重新处理。它失败了。通过一些试验和错误,我将其范围缩小到以下代码段:
Option Compare Database
Option Explicit
Global NtSession As lotus.NotesSession
Sub Main()
    Set NtSession = CreateObject(\"Notes.NotesSession\")
    ...
End Sub
再次,此代码在Production中可以正常工作,但是当我尝试在开发中运行时,它现在会中断(在CreateObject上出现“类型不匹配”错误)。解决此问题的最简单方法是仅在生产环境中开发我的报告,但这违背了目的,更不用说它最初在我的本地计算机上工作了,而现在却没有。那么,为什么这会在我的本地计算机(即Dev)上引发错误,而不是在虚拟机(即Production)中引发错误?     
已邀请:
根据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\")
    
Lotus.NotesSession与Notes.NotesSession不同。您可能只需要将CreateObject行更改为:
Set NtSession = CreateObject(\"Lotus.NotesSession\")
    
检查COM对象nlsxbe.dll是否已安装并在开发计算机上正确注册。也许要取消注册然后重新注册。在Google上搜索“ nlsxbe.dll注册”以获取有关该模块问题的更多提示,该模块应作为Notes客户端安装的一部分进行安装(但可能未注册)。     

要回复问题请先登录注册