Instrukcja Open
Otwiera kanał danych.
Składnia:
Open nazwa_pliku As String [For tryb] [Access IOMode] [Protected] As [#]numer_pliku As Integer [Len = długość_zbioru_danych]
Parametry:
Nazwa_pliku: Nazwa i ścieżka pliku, który ma zostać otwarty. W przypadku próby odczytu nieistniejącego pliku (Access = Read) zostaje wyświetlony komunikat o błędzie. W przypadku próby zapisu do nieistniejącego pliku (Access = Write) zostaje utworzony nowy plik.
Tryb: Słowo kluczowe określające tryb pliku. Prawidłowe wartości: Append (dołącza dane do pliku sekwencyjnego), Binary (dostęp do poszczególnych bajtów danych można uzyskać za pomocą poleceń Get i Put), Input (otwiera kanał danych do odczytu), Output (otwiera kanał danych do zapisu) oraz Random (edytuje pliki względne).
Tryb_wewy: Słowo kluczowe definiujące typ dostępu. Prawidłowe wartości: Read (tylko odczyt), Write (tylko zapis), Read Write (odczyt i zapis).
Ochrona: Słowo kluczowe definiujące stan ochrony pliku po jego otwarciu. Prawidłowe wartości: Shared (plik może zostać otwarty przez inne aplikacji), Lock Read (plik jest zabezpieczony przez odczytem), Lock Write (plik jest zabezpieczony przez zapisem), Lock Read Write (całkowita odmowa dostępu do pliku).
Numer_pliku: Dowolne wyrażenie w postaci liczby całkowitej w zakresie od 0 do 511 oznaczające numer wolnego kanału danych. Kolejne instrukcje dostępu do pliku można przekazywać poprzez ten kanał danych. Numer pliku należy określić za pomocą funkcji FreeFile wywołanej bezpośrednio przez instrukcją Open.
Długość_zbioru_danych: Dla plików względnych zwraca długość określonego rekordu. Ten parametr jest wymagany tylko w przypadku otwarcia pliku w trybie dostępu Random.
Zawartość pliku można modyfikować wyłącznie w przypadku plików otwartych poleceniem Open. W przypadku próby odczytu wcześniej otwartego pliku zostaje wyświetlony komunikat o błędzie.
Przykład:
Sub ExampleWorkWithAFile
Dim iNumber As Integer
Dim sLine As String
Dim aFile As String
Dim sMsg As String
aFile = "c:\data.txt"
iNumber = Freefile
Open aFile For Output As #iNumber
Print #iNumber, "To jest linia tekstu"
Print #iNumber, "To jest kolejna linia tekstu"
Close #iNumber
iNumber = Freefile
Open aFile For Input As iNumber
While Not eof(iNumber)
Line Input #iNumber, sLine
If sLine <>"" Then
sMsg = sMsg & sLine & chr(13)
End If
Wend
Close #iNumber
MsgBox sMsg
End Sub