0

我正在使用 Sage 提供的一些稍作修改的 VBA 代码连接到 Sage 50 帐户 - 这适用于某些机器,但不适用于其他机器,尽管它们都具有相同版本的 Sage (25.1.128),并且以前曾在所有机器都没有问题。该错误在尝试实例化 Sage 数据对象时特别发生,我得到'Run-time error ' 429': ActiveX component can't create object'

我尝试在其中一台有问题的机器上重新安装 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\Accounts\2019")

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 文件 - 我已经验证该文件位于问题机器上,但我认为它可能需要注册,我不确定如何这样做,甚至检查它是否已注册。我什至不知道这是否是此时问题的根源。

4

1 回答 1

0

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

Sage 似乎提供了 64 位版本的加载项/工具,尽管功能有限:
Microsoft Office 和 Sage 帐户、工资单、人力资源和预测兼容性
Sage 50 帐户:安装 64 位 ODBC 驱动程序

于 2019-09-11T07:11:02.037 回答