программно изменить путь ссылки vba - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь обновить путь ссылки надстройки VBA в соответствии с проектом VBA, чтобы он находился на моей машине разработчика или в производственной среде; см. код ниже. Я получаю сообщение об ошибке в строке 41, но я думаю, что это вводит в заблуждение, что означает, что ошибка где-то еще.

Строка 41 ниже

If (InStr(1, AddinRef.FullPath, "C", vbTextCompare) = 0) Then

согласно снимку экрана. Не уверен, что вообще вызывает эту ошибку.

Также обратите внимание, что

  1. появляется окно сообщения об успехе; после этого появляется ошибка.

  2. Код VBA защищен паролем от просмотра

  3. G sccVbaLib не dll - это еще одна книга с кодом VBA, сохраненным как файл "xlam" enter image description here введите описание изображения здесь

    Private Function CheckAddinReferencePath(ByVal IsDebug As Boolean) As Boolean
    

    1 При ошибке Перейти к CheckAddinReferencePath_Error Dim AddinPathIsOk As Boolean

         Const FilePathForVbaAddinProd As String = "\\uk.ssegroup.net\Shared\Groups\Gen-GasStorage\SSEHL Commercial Operations\GsccAddins\"
         Const FilePathForVbaAddinDev As String = "C:\Users\mb95757\Documents\DevVba\GsccAddins\"
         Const FileNameForAddin As String = "GsccVbaLibrary.xlam"
    
         Dim vbProj As VBIDE.VBProject
         Dim chkRef As VBIDE.Reference
         Dim AddinRef As VBIDE.Reference
         Dim BoolExists As Boolean
         Dim FullPath As String
    

    2 AddinPathIsOk = False 3 BoolExists = False

    4 Установить vbProj = ThisWorkbook. VBProject

    5 Выбрать регистр IsDebug Case True 6 FullPath = FilePathForVbaAddinDev & FileNameForAddin

    7 Для каждого chkRef в vbProj.References 8 Если chkRef.Name = "GsccVbaLib" Then 9 Debug. FullPath) 10 Set AddinRef = chkRef 11 BoolExists = True 12 End If 13 Next

    14 If (BoolExists) Then 15 If (InStr (1, AddinRef.FullPath, «C», vbTextCompare) <> 0 ) Then 16 vbProj.References.Remove AddinRef 17 vbProj.References.AddFromFile FullPath 18 End If 19 Else 20 vbProj.References.AddFromFile FilePathForVbaAddinDev & FileNameForAddin 21 End If 22 MsgBox Case «False Dev» 43

    *1042* = FilePathForVbaAddinProd & FileNameForAddin

    25 Для каждого chkRef в vbProj.References 26 Если chkRef.Name = "GsccVbaLib", тогда 27 Установите AddinRef = chkRef 28 BoolExists = True 29 End If 30 Next

    31 If (BoolExists) Then 32 If (InStr (1, AddinRef.FullPath, "Gen-GasStorage", vbTextCompare) = 0) Then 33 vbProj.References .Remove AddinRef 34 vbProj.References.AddFromFile FullPath 35 End If 36 Else 37 vbProj.References.AddFromFile FilePathForVbaAddinProd & FileNameForAddin 38 End If 39 MsgBox «Success Prod» 40 End Select

    * Then IS_DE 41 If (IS_DE) (InStr (1, AddinRef.FullPath, "C", vbTextCompare) = 0) Затем 42 AddinPathIsOk = True 43 End If #Else 44 If (Not InStr (1, AddinRef.FullPath, "Gen-GasStorage", vbTextCompare) = 0) Затем 45 AddinPathIsOk = True 46 End If #End If

    47 Debug.Print (AddinRef.FullPath)

    48 Set vbProj = Nothing

    49 CheckAddinReferencePath = AddinPathIsOk

    50 При ошибке GoTo 0 51 Функция выхода

    CheckAddinReferencePath_Error:

    52 MsgBox «Ошибка» и номер ошибки & »(« & Err.Description & ») в файле Ежедневный отчет 2021.xlsm, проверка процедуры AddinReferencePath, строка "& Erl &". "

    Конечная функция

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...