我在文件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文件以只读方式打开,如果考虑到循环,则不使用该文件。
如果我同时从两台计算机上运行此宏,但延迟几秒钟,则两台计算机上的一切运行正常。