ACCPAC和Excel电子表格

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

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

我也对ACCPAC从电子表格获取数据的解决scheme开放了头脑,而不是创buildACCPAC连接和对象的电子表格macros。

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

有两种方法可以在不进入import路线的情况下做你正在寻找的东西。 两者都涉及VBA编程。 Sage ERP 300(或者我们都知道的Accpac)可以通过COM进行控制。 这意味着你可以logging一个你想在Accpac中自动化或者控制的macros的过程,你将得到一个VBA代码,这会给你一个很好的起点。 然后,可以将该代码带入Excel工作簿中的VBA代码。 但是,你会错过一个部分。 当您从Excel中启动Accpac时,您需要创build一个新的会话; 告诉Accpac您的用户ID,密码,您要连接的公司以及会话date。 使用该AccpacSession COM对象,然后可以使用logging的VBA代码来自动执行Accpac,并将Excel工作簿中的信息推送到Accpac中。

下面是一个如何创build一个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中logging的VBAmacros,并添加代码来控制Excel。

导入模板可以正常工作,但是如果在导入过程中validation出现问题,那么这些模板可能会成为一个挑战,有时可能很难找出问题出在哪里以及出了什么问题。 通过使用VBA路线,您可以对数据进行自己的validation,并纳入您自己的业务规则,并能够向用户提供更多信息性的错误消息。

编辑:从Excel的VBA环境中,您将添加引用。 您需要的所有Accpac com对象都以“ACCPAC”作为前缀。 具体而言,您需要ACCPAC COM API对象1.0和ACCPAC会话pipe理器1.0。

Interesting Posts