Удалить модуль с тем же именем, что и импортируемый - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь настроить модуль импорта, и мне нужно удалить модули перед импортом, если он удовлетворяет условию. Есть 4 модуля, которые нужно проверить.

Код проверяет дату файла, измененную по диапазону, а затем, если дата больше, импортируется. Код при запуске выдает ошибку.

For Each objFile In objFSO.GetFolder(szImportPath).Files
    If (objFSO.GetExtensionName(objFile.Name) = "bas") Or _
       (objFSO.GetExtensionName(objFile.Name) = "cls") Or _
       (objFSO.GetExtensionName(objFile.Name) = "frm") And _
        objFile.DateLastModified > Range("ImportDate") Then

        'Delete all modules/Userforms from the ActiveWorkbook
        'Call DeleteVBAModulesF    
        szFileName = objFile.Name

        Dim VBProj As VBIDE.VBProject
        Dim VBComp As VBIDE.VBComponent

        Set VBProj = ActiveWorkbook.VBProject
        Set VBComp = VBProj.VBComponents(szFileName)
        VBProj.VBComponents.Remove VBComp

        Range("MacroName") = objFile.Name
        Range("ImportDate") = Format(Date, "dd/mm/yyyy") & " " & Format(Time, "hh.nn.ss")
        '^ Keep time as without, it will import the same module throughout the day when opened.

        cmpComponents.Import objFile.path
    End If

Next objFile

Я надеюсь, что он удаляет текущий модуль, а затем импортирует.

1 Ответ

0 голосов
/ 25 июня 2019

Нашел ответ.Пришлось взять расширение имени конца и теперь оно работает.Вот код .

            Dim FileName

            FileName = Left(objFile.Name, (InStrRev(objFile.Name, ".", -1, vbTextCompare) - 1))

            Dim VBProj As VBIDE.VBProject
            Dim VBComp As VBIDE.VBComponent

            Set VBProj = ActiveWorkbook.VBProject
            Set VBComp = VBProj.VBComponents(FileName)
            VBProj.VBComponents.Remove VBComp

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