Обходная папка для изменения кода в защищенном VBAProject - PullRequest
0 голосов
/ 09 апреля 2019

Я хочу просмотреть множество файлов макросов Excel и изменить изменения в коде. Все эти файлы / проекты защищены известным паролем. Мне удается открыть проект (ы) с паролем. Задача состоит в том, чтобы закрыть окно «VBAProject - Project Properties», то есть нажать кнопку OK. Я нахожу обработчик окна, но не могу закрыть окно. Фактически, он исчезает через 3-5 секунд, но задержка создает более поздние проблемы в коде. (Макрос висит!). Он отлично работает с парой файлов, но если их больше пяти, макрос завершается ошибкой. Файлы находятся в Citrix.environment.

With objWordApp.VBE
    For Each VBProj In .VBProjects
    Debug.Print VBProj.FileName
        lCntr = lCntr + 1
        If VBProj.FileName = sPath Then
            Set .ActiveVBProject = .VBProjects(lCntr)
            objWordApp.VBE.CommandBars(1).FindControl(ID:=2578, recursive:=True).Execute
            strResult = GetHandleFromPartialCaption(lhWndP, "Password")
            ChildRet = FindWindowEx(lhWndP, ByVal 0&, "Edit", vbNullString)

            If ChildRet <> 0 Then
                SendMess MyPassword, ChildRet
                DoEvents
                hwnd = FindWindowEx(lhWndP, ByVal 0&, "BUTTON", "OK") 'vbNullString)
                If hwnd = 0 Then
                    Debug.Print "Couldn't find the button"
                End If
                Call SendMessageBynum(hwnd, BM_CLICK, 0, 0)

                strResult = GetHandleFromPartialCaption(lhWndP, "TemplateProject")
                DoEvents

                hwnd = FindWindowEx(lhWndP, ByVal 0&, "BUTTON", "OK") 'vbNullString)
                If hwnd = 0 Then
                    Debug.Print " TemplateProject Couldn't find the button " & sPath
                End If
                Call SendMessageBynum(hwnd, BM_CLICK, 0, 0)

            End If

            Set objProjectToBeedited = .ActiveVBProject

            Exit For
        End If
    Next
End With
...