Ошибка 91, VBA Excel, CATIA API: переменная не установлена - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь получить доступ к функциям CATIA при обновлении жизненного цикла документа в Smarteam в макросе Excel, следующие строки

Dim CATEngine As StiEngine

Set CATEngine = CATIA.GetItem("CAIEngine")

продолжает возвращать error 91: variable not set проблему.

По этой ссылкеЯ не из-за того, что простая команда, подобная этой, возвращает эту ошибку http://catiadoc.free.fr/online/interfaces/interface_StiEngine.htm

, возможно, я неправильно загружаю определенные библиотеки / интеграции?приветствуются все идеи

Это код из другого модуля, который работал, не являющиеся необязательными и не глобальными определениями (я пробовал глобальное определение CATIAEngine, но оно возвращает ошибку неоднозначности):

Sub checkUUID()

    Dim FoundObj As ISmObject
    Dim wbNew As Workbook, wsNew As Worksheet
    Dim checkDOCUUID As Document
    Dim Products As Products
    Set wbNew = ActiveWorkbook
    Set wsNew = wbNew.Sheets(1)
    Set SmEngine = CreateObject("SmApplic.SmFreeThreadedEngine")
    SmEngine.Init "SmTeam32"
    Set SmSession = CreateObject("SmApplic.SmSession")
    SmSession.Init SmEngine, "MySession", "SmTeam32"
    wsNew.Activate
    Dim childList() As String

    Set SmDatabase = SmEngine.Databases(0)
    ID = SmDatabase.Alias           'Provider=SQLOLEDB.1;Persis Security Info=False;User ID=SMARTUSER;Initial Catalog=Smarteam;Data Source=ST2008SQL\SQLSMARTEAM
    Pass = SmDatabase.Password      'ProvidSMARTEAM_7kikX/GtJNG6d7BcYeTi8cf4IuVCgWjDrvo/Oo4xdZgHjg+fDpzdEEll7tcGT96tcB7pP8krz1hw6pDgzXchTrwfm1t0FKGsDK6C7EvQW7+grVLwZamcVpnmz6ibMWAogHWcLM+H6ID87NIXwBLXNaJxm3tKg6eZ84nzNSkCGFc=
    Call SmSession.OpenDatabaseConnection(ID, Pass, True)

    If SmSession.IsServiceEnabled("SmGUISrv.SmCommonGUI", Reason) Then
        Set GUIServices = SmSession.GetService("SmGUISrv.SmCommonGUI")
    End If

    GUIServices.Dialogs.ExecuteLogin

    Set FSO = CreateObject("Scripting.filesystemobject")


    tempFolderName = "C:\ST Temp\UUID\"
    If Len(Dir("C:\ST Temp\", vbDirectory)) = 0 Then
        MkDir "C:\ST Temp\"
    End If

    If Len(Dir("C:\ST Temp\UUID\", vbDirectory)) = 0 Then
        MkDir tempFolderName
    End If

    CatiaConnect                                'launch Catia V5
    CatIntgConnect                              'connect to ST using ST CATIA integration
    CATIA.DisplayFileAlerts = False             'disable all the warning's and disables all the user interaction





CatIntgConnect

Sub CatIntgConnect()

    Set CATEngine = CATIA.GetItem("CAIEngine")

    ' -----------------------------------------------------------
    ' CATIA V5 Operations are performed in the background
    ' -----------------------------------------------------------
    Dim BooleanUI As Boolean
    If (CATEngine.UseGraphicalUI) = True Then
            CATEngine.UseGraphicalUI = True
            BooleanUI = True
    End If
    ' -----------------------------------------------------------
    ' Connect to the SmarTeam database (if not already connected)
    ' -----------------------------------------------------------
    Dim BoolConnect As Boolean
    BoolConnect = False
    If Not CATEngine.IsConnected() = True Then
             CATEngine.Connect "", ""             'to perform automation via CATIA SMARTEAM integration, must type in the userid and password
             BoolConnect = True
    End If
End Sub
...