Запрос пароля, даже если они установлены - PullRequest
0 голосов
/ 07 октября 2019

У меня есть макрос в файле A, чтобы выбрать некоторые данные из файла A, открыть файл B, записать эти данные на них, а затем закрыть его.

    PROM_ADRESA = Range("BUNKA_adresa_databaze")
    PROM_JMENO = "DATABASE_" & PROM_Year & ".xlsx"

    On Error Resume Next
    Set DB_kontrola = Workbooks(PROM_JMENO)
        DB_otevrena = Not DB_kontrola Is Nothing
        If DB_otevrena = True Then
        Workbooks(PROM_JMENO).Close savechanges:=False
        End If

    PODMINKA_casovac = Now()
    Do Until Now() = PODMINKA_casovac + 0.0003 Or Now() > PODMINKA_casovac + 0.0003
        If IsFileOpen(PROM_ADRESA & PROM_JMENO) = False Then
        ' the file is not in use.
            GoTo PODMINKA_ACCESS_OK
        Else
            ' the file in use.
            If Now() > PODMINKA_casovac + 0.0003 Then
            MsgBox "Nedaří se připojit do databáze. Kontaktujte prosím správce."
            Exit Sub
            End If
        End If
    Loop

    PODMINKA_ACCESS_OK:

    Set PROM_DATABASE = Workbooks.Open(PROM_ADRESA & PROM_JMENO, Password:="something", ReadOnly:=False)

    With PROM_DATABASE 'with se táhne až po konec skriptu

        If PROM_DATABASE.ReadOnly Then
            PROM_DATABASE.Close
            MsgBox "Databáze je momentálně zaneprázdněna zápisem jiného uživatele. Stiskněte tlačítko ULOŽIT znovu."
            Exit Sub
        End If

*my own code*

end with

файл B защищен паролем и расположен в сетевом расположении,Функция IsFileOpen работает хорошо, цикл работает нормально. Если я открою на компьютере 2 файл B, цикл на компьютере 1 запустится прибл. 30 секунд, а затем предложите msgbox. Если я закрою файл B на компьютере 2, на компьютере 1 цикл завершится, и код продолжится хорошо. Но если я запускаю этот код на двух компьютерах одновременно (что я хочу) на одном компьютере, введите пароль. Как это возможно, когда я установил пароль в коде? Если я напишу пароль и нажму "ОК", запустите эту часть:

If PROM_DATABASE.ReadOnly Then
                PROM_DATABASE.Close
                MsgBox "Databáze je momentálně zaneprázdněna zápisem jiného uživatele. Stiskněte tlačítko ULOŽIT znovu."
                Exit Sub
            End If

Я не знаю, почему этот B-файл открыт как только для чтения, если цикл считает, что этот файл не используется.

Если я запускаю этот макрос одновременно с двух компьютеров, но с небольшой задержкой в ​​секунду, все работает хорошо на обоих компьютерах.

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