Conteúdo
Índice 🔎︎

# Instrução Open

Abre um canal de dados.

## Sintaxe:

    Open NomeFicheiro As String [For Modo] [Access IOModo] [Protegido] As [#]NumFicheiro As Integer [Len = TamanhoDados]

## Parâmetros:

NomeFicheiro: nome e caminho do ficheiro que pretende abrir. Se tentar ler um ficheiro que não existe (Acesso = Leitura), surge uma mensagem de erro. Se tentar gravar num ficheiro que não existe (Acesso = Escrita), é criado um novo ficheiro.

Modo: a palavra-chave que especifica o modo de ficheiro. Valores válidos: Anexar (anexar a ficheiro sequencial), Binário (os dados podem ser acedidos por bytes utilizando Get e Put), Entrada (abre um canal de dados para leitura), Saída (abre canal de dados para escrita) e Aleatório (edita ficheiros relativos).

IOModo: a palavra-chave que define o tipo de acesso. Valores válidos: Ler (só de leitura), Escrever (só de escrita), Ler e escrever (ambos).

Protegido: palavra-chave que define o estado de segurança de um ficheiro depois de ser aberto. O valores válidos são: Partilhado (o ficheiro pode ser aberto por outras aplicações), Bloquear leitura (o ficheiro está protegido contra leitura), Bloquear escrita (o ficheiro está protegido contra escrita), Bloquear leitura e escrita (nega o acesso ao ficheiro).

NumFicheiro: qualquer expressão de números inteiros de 0 a 511 para indicar o número de um canal de dados livre. É, então, possível transmitir comandos através do canal de dados para aceder ao ficheiro. O número do ficheiro tem de ser determinado pela função FreeFile imediatamente antes da instrução Open.

TamanhoDados: Para ficheiros de acesso aleatório, defina a dimensão dos registos.

Só pode modificar o conteúdo de um ficheiro que foi aberto com a instrução Open. Se tentar abrir um ficheiro que já esteja aberto, surge uma mensagem de erro.

## Exemplo:

    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, "Esta é uma linha do texto"
        Print #iNumber, "Esta é outra linha de texto"
        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