即使已设置密码提示

时间:2019-10-07 19:27:55

标签: vba excel-2010

我在文件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。如果我关闭计算机2上的文件B,则计算机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文件以只读方式打开,如果考虑到循环,则不使用该文件。

如果我同时从两台计算机上运行此宏,但延迟几秒钟,则两台计算机上的一切运行正常。

0 个答案:

没有答案