2013-08-27 279 views
0

有没有办法在VBA for Excel 2010中引用ACCPAC?ACCPAC和Excel电子表格

我想知道如果电子表格中的信息可以通过从Excel内运行宏以编程方式输入到我们的会计数据库中。我刚刚在ACCPAC的一个测试数据库中研究了一个我在录制新客户时录制的宏。我们的运营中心将信息存储在电子表格中,我希望能够进入数据库而无需重新键入数据。

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

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

+0

http://kb.accpac.com/cgi-bin/sagesoftwareonline2.cfg/php/enduser/std_adp.php?p_faqid=27834&p_created=1252701241可能会引起您的兴趣。我建议收集Sage而不是从Excel交付,因为会计软件应该具有良好的审计控制,包括比Excel更好的“简历”。 – pnuts

+0

我现在开始认为,如果我导出一批样本数据并分析结果,那么我可能会从电子表格中导入适当的“模板”。这个电子表格模板可以替换现有的电子表格,并允许导入的方便,可能不需要自定义的宏。 – armadadrive

回答

5

有两种方法可以在不进口进口路线的情况下做你想要的东西。两者都涉及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对象1.0和ACCPAC会话管理器1.0。

+0

这是一个奇妙的回应,彻底概括了两种方法。非常感谢您花费一些时间来帮助我,我非常感谢。 – armadadrive

+0

是否需要通过Excel的VBA参考Accpac? – armadadrive

+0

希望能让你走。没有大量的实际文档,但在这里和那里都有例子。我更新了我的答案,以包含您需要添加的两个引用,以便在Excel的VBA环境中运行Accpac。 – 2013-08-30 19:15:11