ActiveX 组件无法创建 Sage 数据对象

ActiveX component cannot create Sage Data Object

我正在使用 Sage 提供的一些稍微修改过的 VBA 代码来连接到 Sage 50 帐户 - 这适用于某些机器,但不适用于其他机器,尽管它们都具有相同版本的 Sage (25.1 .128),并且之前在所有机器上都没有问题。该错误特别发生在尝试实例化 Sage 数据对象时,我得到 'Run-time error ' 429': ActiveX 组件无法创建对象'.

我已尝试在其中一台有问题的机器上重新安装 Sage,并检查了是否已将正确的引用添加到 VBA 项目中。所有有问题的机器都是 运行 windows 10 64 位。这是我正在使用的连接代码:

Sub SageConnectTest()

Dim oSDO As SageDataObject250.SDOEngine
Dim oWS As SageDataObject250.WorkSpace
Dim oSdc As Object, oSrs As Object
Dim szDataPath As String

Set oSDO = New SageDataObject250.SDOEngine
Set oWS = oSDO.Workspaces.Add("Example")

szDataPath = oSDO.SelectCompany("C:\ProgramData\Sage\Accounts19")

If szDataPath <> "" Then
    ' Try to Connect - Will Throw an Exception if it Fails
    If oWS.Connect(szDataPath, XXXX, XXXX, XXXX) Then
        MsgBox "Connection to Sage is Successful!", vbOKOnly + vbInformation, "Sage Connection Test"
    End If
End If

If oSDO.isregistered = True Then
    MsgBox "Sage Data Object is Registered", vbOKOnly + vbInformation, "Sage Connection Test"
    Else
    MsgBox "SDO registration Faliure", vbOKOnly + vbCritical, "Sage Connection Test"
End If

oWS.Disconnect

Exit Sub
Errhandle:
oWS.Disconnect
MsgBox "There was an error connecting to Sage - disconnecting", vbOKOnly + vbCritical, "Sage Connection Test"

End Sub

谷歌搜索问题发现一些结果指向一个名为 'SdoENG250.tlb' 的 tlb 文件 - 我已经验证该文件位于有问题的机器上,但我相信它可能需要注册并且我我不确定该怎么做,甚至不知道它是否已注册。目前我什至不知道这是否是问题的根源。

如果您使用的是 64 位版本的 Office(不是 Windows!),您需要适当版本的外部库。如果是自己写的,生成一个 64 位版本,如果来自供应商,考虑向他们索取新版本 MS Docs: Compatibility between the 32-bit and 64-bit versions of Office .

Sage 似乎提供了其 Add-Ins/Tools 的 64 位版本,尽管功能有限:
Microsoft Office and Sage Accounts, Payroll, HR and Forecasting compatibility
Sage 50 Accounts: Install the 64-bit ODBC driver