Czasem chcielibyśmy wiedzieć, czy plik na którym chcemy wykonać jakąś operację, jest dla nas dostępny. Np gdy jest otwarty przez innego użytkownika próba jego użycia może powodować błąd. Ponadto wcześniej należy sprawdzić czy dany plik w ogóle istnieje. Można to sprawdzić przy pomocy poniższych funkcji:
Public Const WERSJA as String = "Dostępność pliku v.0.1" Sub TestFunkcji() Const NAZWA_PLIKU As String = "C:\EX04\Baza.xls" If BrakPliku(NAZWA_PLIKU) Then Exit Sub If PlikNiedostepny(NAZWA_PLIKU) Then Exit Sub MsgBox "Plik jest dostępny, można coś z nim robić ;)", vbInformation End Sub Function PlikNiedostepny(NazwaPliku As String) As Boolean Dim NrPliku As Long On Error GoTo Obsluga NrPliku = FreeFile() Open NazwaPliku For Binary Access Read Write Lock Read Write As #NrPliku Close #NrPliku Exit Function Obsluga: Select Case Err Case 70 MsgBox "Plik jest obecnie otwarty przez inny proces", vbExclamation Case Else MsgBox "Przy próbie otwarcia pliku zgłaszany jest błąd: " _ & Err & " - " & Err.Description, vbCritical End Select PlikNiedostepny = True End Function Function BrakPliku(PelnaNazwaPliku As String) As Boolean If Dir(PelnaNazwaPliku) = "" Then MsgBox "Brak pliku", vbCritical, WERSJA BrakPliku = True End If End Function |
WERSJA – nie jest zdefiniowana oraz dobrze by było napisać funkcję która gdy plik nie jest otwary go go otowrzy. W trakcie komilacji zmienna NAZWA_PLIKU nie stwierdza czy plik leży ma dysku co jest powaznym probllem
WERSJA to oczywiście stała i faktycznie w tym kawałku kodu nie była zdefiniowana
Trzeba w module publicznym w sekcji deklaracji dopisać coś jak poniżej:
Const WERSJA As String = „Jakaś apka v.0.0.1”
Co do otwierania to już niekoniecznie, ponieważ nie wiemy jakiego typu to jest plik w związku z tym może być problem z poprawnym otwarciem