Использование Cosign SAPI COM DLL в VBA для Word 2010

Я только учусь использовать CoSign SAPI. Я загрузил пример кода программы VB.Net для Visual Studio, и он работает нормально. Затем я попытался запустить код в Microsoft Word 2010 как модуль VBA. Код выполняется нормально до инструкции SAPI.logon и завершается ошибкой. Ниже приведен код, который я использую. Кроме того, знаете ли вы какие-либо другие примеры программ, использующих SAPICom в Word VBA? Большое спасибо за вашу помощь.

Public Sub testCoSign ()

    Const SAPI_OK As Integer = 0

    Dim rc As Integer
    Dim SAPI As New SAPICrypt
    Dim sesMyHandle As New sesHandle

    'Custom Values
    Dim filePath As String   'PDF file to sign
    Dim username As String   'CoSign account username
    Dim password As String   'CoSign account password
    Dim domain As String     'CoSign account domain
    Dim sigPageNum As Integer  'Create signature on the first page
    Dim sigX As Integer        'Signature field X location
    Dim sigY As Integer        'Signature field Y location
    Dim sigWidth As Integer    'Signature field width
    Dim sigHeight As Integer   'Signature field height
    Dim timeFormat As String   'Time appearance format mask
    Dim dateFormat As String   'Date appearance format mask
    Dim appearanceMask As Integer 'Elements to display on the signature field

    'Initialize variables
    Set sesMyHandle = Nothing
    filePath = "c:\\temp\\demo.doc"
    username = "JSMITH"
    password = "*******"
    sigPageNum = 1
    sigX = 145
    sigY = 125
    sigWidth = 160
    sigHeight = 45
    timeFormat = "hh:mm:ss"
    dateFormat = "dd/MM/yyyy"
    appearanceMask = SAPI_ENUM_DRAWING_ELEMENT.SAPI_ENUM_DRAWING_ELEMENT_GRAPHICAL_IMAGE Or _
                     SAPI_ENUM_DRAWING_ELEMENT.SAPI_ENUM_DRAWING_ELEMENT_SIGNED_BY Or _
                     SAPI_ENUM_DRAWING_ELEMENT.SAPI_ENUM_DRAWING_ELEMENT_TIME


' Initialize SAPI library
rc = SAPI.Init
If rc <> SAPI_OK Then
    MsgBox "error initializing SAPI", vbOKOnly, "Error"
End If

' Acquire SAPI session handle
rc = SAPI.HandleAcquire(sesMyHandle)
If rc <> SAPI_OK Then
    MsgBox "error acquiring SAPI session handle", vbOKOnly, "Error"
End If

' Personalize SAPI Session
rc = SAPI.Logon(sesMyHandle, username, "", password)
If rc <> SAPI_OK Then
    MsgBox "failure to authenticate user", vbOKOnly, "Error"
End If

End Sub

2 ответа

Код сейчас проснулся. Проблема была из-за неверной учетной записи пользователя; Я не осознавал, что учетная запись пользователя чувствительна к регистру. После правильного ввода имени учетной записи код теперь работает.

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

    Dim SAPI As SAPICrypt
    Set SAPI = New SAPICrypt
    Dim sesMyHandle As sesHandle
    Set sesMyHandle = Nothing

Спасибо за вашу помощь.

Я не думаю, что вы можете вызвать SAPI COM из VBA (в основном сценарий из Word). Можете ли вы попробовать запустить свой VB.Net как независимое приложение?

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