【问题标题】:ACCPAC and Excel SpreadsheetsACCPAC 和 Excel 电子表格
【发布时间】:2013-08-27 18:02:48
【问题描述】:

有没有办法在 VBA for Excel 2010 中引用 ACCPAC?

我想知道是否可以通过在 Excel 中运行宏以编程方式将电子表格中的信息输入到我们的会计数据库中。我刚刚研究了在 ACCPAC 的测试数据库中输入新客户时记录的宏。我们的运营中心将信息存储在电子表格中,我希望能够在不重新键入数据的情况下进入数据库。

我也对 ACCPAC 从电子表格获取数据的解决方案持开放态度,而不是通过电子表格宏创建 ACCPAC 连接和对象。

这不是一个超级参与的项目 - 我们只是想减少冗余。

【问题讨论】:

  • 我现在开始认为,如果我导出一批样本数据并分析结果,那么我可能会获得从电子表格导入的正确“模板”。此电子表格模板可以“在现场”替换现有的电子表格,并易于导入,可能无需自定义宏。

标签: excel vba accpac


【解决方案1】:

有两种方法可以在不走导入路线的情况下完成您正在寻找的事情。两者都涉及 VBA 编程。 Sage ERP 300(或我们都知道的 Accpac)可以通过 COM 控制。这意味着您可以在 Accpac 中记录您想要自动化或控制的过程的宏,您将获得 VBA 代码,这将为您提供一个良好的起点。然后,您可以将该代码带入 Excel 工作簿中的 VBA 代码。但是,您将丢失一份。当您从 Excel 中启动 Accpac 时,您需要创建一个新会话;告诉 Accpac 您的用户 ID、密码、您要连接的公司和会话日期。使用该 AccpacSession COM 对象,您可以使用记录的 VBA 代码自动执行 Accpac 并将您在 Excel 工作簿中的信息推送到 Accpac。

以下是如何创建 AccpacSession 对象的示例:

Public AccSession As AccpacSession
Public AccSessMgr As AccpacSessionMgr
Public AccDBLink As AccpacDBLink
Private mlSessionID As Long
Private mstrObjectHandle As String
'-----------------------------------------------------------

Public Function OpenAccpacSession(Optional sCompany As String) As Boolean

    OpenAccpacSession = False
    mstrServerName = ""
    If AccSessMgr Is Nothing Then
        Set AccSessMgr = CreateObject("Accpac.SessionMgr")

        With AccSessMgr
            .AppID = "XY"
            .AppVersion = "61A"
            .ProgramName = "XY0001"

            .ServerName = mstrServerName
        End With  ' mSessMgr
    End If

    If AccSession Is Nothing Then
        AccSessMgr.CreateSession mstrObjectHandle, mlSessionID, AccSession
    End If

    If AccSession Is Nothing Then
        OpenAccpacSession = False  ' user couldn't sign on
    Else
        OpenAccpacSession = AccSession.IsOpened
    End If

    If OpenAccpacSession = True Then
        Set AccDBLink = AccSession.OpenDBLink(DBLINK_COMPANY, DBLINK_FLG_READWRITE)
    End If

End Function

现在您可以使用 AccDBLink 对象打开视图以将数据导入 Accpac。

另一种方法是使用您在 Accpac 中录制的 VBA 宏并添加代码来控制 Excel。

导入模板可以正常工作,但正确设置它们可能是一个挑战,如果在导入过程中出现验证问题,有时可能很难找出问题所在和问题所在。通过走 VBA 路线,您可以自己验证数据,结合您自己的业务规则,并能够向用户提供更多信息性错误消息。

编辑:您将在 Excel 的 VBA 环境中添加引用。本部分所需的所有 Accpac com 对象都以“ACCPAC”为前缀。具体来说,您需要 ACCPAC COM API Object 1.0 和 ACCPAC Session Manager 1.0。

【讨论】:

  • 这是一个了不起的回应,彻底概述了这两种方法。非常感谢您花时间帮助我,非常感谢。
  • 是否需要通过 Excel 的 VBA 引用 Accpac?
  • 希望这能让你继续前进。没有大量的实际文档,但这里和那里都有示例。我更新了我的答案,以包括您需要添加以从 Excel 的 VBA 环境中运行 Accpac 的两个引用。
猜你喜欢
  • 1970-01-01
  • 2020-09-09
  • 2017-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多