Módulo
Conteúdo
Índice 🔎︎

# Instrução Open

Abre um canal de dados.

## Sintaxe:

    Open FileName As String [For Mode] [Access IOMode] [Protected] As [#]FileNumber As Integer [Len = DatasetLength]

## Parâmetros:

FileName: Nome e caminho para o arquivo que se deseja abrir. Se você tentar ler de um arquivo inexistente (Access = Read), será exibida uma mensagem de erro. Se você tentar escrever para um arquivo inexistente (Access = Write), um novo arquivo será criado.

Mode: palavra-chave que especifica o modo do arquivo. Valores válidos: Append (acrescenta no final do arquivo sequencial), binary (dados podem ser acessados por bytes que usam Get e Put), Input (abre canal de dados para leitura), Output (abre canal de dados para gravação) e Random (edita arquivos relativos).

IOMode: palavra-chave que define o tipo de acesso. Valores válidos: Read (somente leitura), Write (somente gravação), Read Write (ambos).

Protected: palavra-chave que define o status de segurança de um arquivo após a abertura. Valores válidos: Shared (o arquivo pode ser aberto por outros aplicativos), Lock Read (arquivo protegido contra leitura), Lock Write (arquivo protegido contra gravação), Lock Read Write (nega acesso ao arquivo).

FileNumber: qualquer expressão de número inteiro de 0 a 511 para indicar o número de um canal de dados livre. Você pode então passar comandos pelo canal de dados para acessar o arquivo. O número do arquivo deve ser determinado pela função FreeFile imediatamente antes da instrução Open.

DatasetLength: Para arquivos de acesso aleatório, define o comprimentos dos registros.

Você só pode modificar o conteúdo de um arquivo aberto com a instrução Open. Se tentar abrir um arquivo que já esteja aberto, uma mensagem de erro será exibida.

## 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 de texto"

        Print #iNumber, "Esta é uma 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