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