ACCPAC и таблицы Excel

Есть ли способ ссылаться на ACCPAC в VBA для Excel 2010?

Мне интересно, можно ли программно ввести информацию из электронной таблицы в нашу учетную базу данных, запустив макрос из Excel. Я только что изучал макрос, записанный при вводе нового клиента в тестовую базу данных в ACCPAC. Наши операционные центры хранят информацию в электронных таблицах, которые я хотел бы иметь в базе данных без повторного ввода данных.

Я также открыт для решений, в которых ACCPAC получает данные из электронных таблиц, а не макросы электронных таблиц, создающие подключения и объекты ACCPAC.

Это не супер-вовлеченный проект - мы просто хотим что-то сократить избыточность.

1 ответ

Решение

Есть два способа сделать то, что вы ищете, не идя по пути импорта. Оба связаны с программированием на VBA. Sage ERP 300 (или Accpac, как мы все это знаем) может управляться через COM. Это означает, что вы можете записать макрос процесса, который вы хотите автоматизировать или контролировать в Accpac, и вы получите код VBA, который даст вам хорошую отправную точку. Затем вы можете перенести этот код в код VBA в вашей книге Excel. Однако вам будет не хватать одной порции. Когда вы запускаете Accpac из Excel, вам нужно создать новый сеанс; сообщая Accpac свой идентификатор пользователя, пароль, компанию, к которой вы хотите подключиться, и дату сеанса. С этим COM-объектом AccpacSession вы можете использовать записанный код 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.

Другой способ - взять макрос VBA, который вы записали в Accpac, и добавить код для управления Excel.

Шаблоны импорта будут работать нормально, но они могут быть проблемой для правильной настройки, и если во время импорта возникают проблемы с проверкой, иногда бывает сложно определить, где и в чем проблема. Пройдя маршрут VBA, вы можете выполнить свою собственную проверку данных, включив в нее правила своего бизнеса и дать пользователю более информативные сообщения об ошибках.

Изменить: В среде VBA Excel вы будете добавлять ссылки. Все com-объекты Accpac, которые вам понадобятся для этой части, имеют префикс "ACCPAC". В частности, вам понадобятся ACCPAC COM API Object 1.0 и ACCPAC Session Manager 1.0.

Другие вопросы по тегам