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