Módulo
Contenido
Índice 🔎︎

# Instrucción Open

Abre un canal de datos.

## Sintaxis:

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

## Parámetros:

FileName: Nombre y ruta del archivo que quiere abrir. Si intenta leer un archivo que no existe (Access = Read), aparecerá un mensaje de error. Si intenta escribir un archivo que no existe (Access = Write), se creará un archivo nuevo.

Mode: palabra clave que especifica el modo del archivo. Valores válidos: «Append» (añade a un archivo secuencial), «Binary» (se puede acceder a los datos por bytes mediante Get y Put), «Input» (abre el canal de datos para su lectura), «Output» (abre el canal de datos para su escritura) y «Random» (edita archivos relativos).

IOMode: Palabra clave que define el tipo de acceso. Valores válidos: «Read» (solo lectura), «Write» (solo escritura), «Read Write» (ambos).

Protected: palabra clave que define el estado de seguridad de un archivo después de su apertura. Valores válidos: «Shared» (otras aplicaciones pueden abrir el archivo), «Lock Read» (el archivo está protegido contra lectura), «Lock Write» (el archivo está protegido contra escritura) y «Lock Read Write» (impide el acceso al archivo).

FileNumber: cualquier expresión entera, de 0 a 511, que indica el número de un canal de datos libre. A continuación puede pasar órdenes a través del canal de datos para acceder al archivo. El número de archivo debe determinarlo la función FreeFile inmediatamente antes de la instrucción Open.

DatasetLength: Para los archivos de acceso aleatorio, establece la longitud de los registros.

Solo se puede modificar el contenido de los archivos que se hayan abierto con la instrucción Open. Si intenta abrir un archivo que ya está abierto, aparecerá un mensaje de error.

## Ejemplo:

    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, "Este es un renglón de texto"

        Print #iNumero, "Esta es otra línea 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