VBA登录sage50

问题描述 投票:-1回答:1

我使用VBA代码连接到sage50,应用程序启动-没问题。但是然后系统要求输入用户名和密码。如何通过VBA代码提交此值?

vba passwords connect username sage50
1个回答
0
投票

[不确定Sage50是否使用Sage 300使用的相同COM API,但如果确实如此,则需要添加对AccpacCOMAPI类型库的引用。

要连接到Sage,您需要创建一个AccpacSession对象:

Dim session As AccpacCOMAPI.AccpacSession
Set session = New AccpacCOMAPI.AccpacSession

然后您需要调用其Init方法:

Const NonSDKAppId As String = "XX"
Const ProgramName As String = NonSDKAppId & "9999"
Const AppVersion As String = "01A"

session.Init vbNullString, NonSDKAppId, ProgramName, AppVersion

从那里您可以像这样获得可用的组织(Sage数据库):

Dim orgs As Collection
Set orgs = New Collection

Dim index As Long
Dim org As AccpacCOMAPI.AccpacOrganization

For index = 0 To session.Organizations.Count - 1
    With session.Organizations.ItemByIndex(index)
        If .Type = AccpacCOMAPI.ORG_COMPANY Then orgs.Add Array(.DatabaseID, .Name)
    End with
Next

ReDim organizations(0 To orgs.Count - 1, 0 To 1)
Dim itemIndex As Long
Dim item As Variant
For Each item In orgs
    organizations(itemIndex, 0) = item(0)
    organizations(itemIndex, 1) = item(1)
    itemIndex = itemIndex + 1
Next

现在,您有一个organizations 2D数组,其中一列包含数据库ID,另一列包含描述-如果需要,这非常适合在自定义登录表单上填充2列下拉列表/组合框。否则,您可以在Open会话时对凭证进行硬编码:

session.Open "username", "password", "database ID", VBA.DateTime.Now, 0, vbNullString

最后一步是打开DbLink

Dim dblink As AccpacCOMAPI.AccpacDBLink
Set dblink = session.OpenDBLink(AccpacCOMAPI.DBLINK_COMPANY, AccpacCOMAPI.DBLINK_FLG_READWRITE)

从那里开始,你很好!

© www.soinside.com 2019 - 2024. All rights reserved.