¿Cómo usar la instrucción Seek en VBA?

La instrucción `Seek` en VBA se usa principalmente en conjunto con operaciones de archivo para cambiar la posición actual del puntero de lectura/escritura en un archivo abierto con las funciones `Open` o `OpenText`. Puede ser útil cuando quieres empezar a leer o escribir en un punto específico de un archivo en lugar de hacerlo desde el principio o continuando desde la posición actual.

`Seek` se utiliza con archivos abiertos en modo Acceso Aleatorio (Random), Binario (Binary), Secuencial de Entrada o Salida (Input/Output). Aquí te muestro cómo usar la instrucción `Seek` en diversos contextos:

Uso Básico de Seek

Dim FileNumber As Integer
Dim FilePath As String
Dim Data As String

' Define la ruta del archivo. Asegúrate de cambiar esto por una ruta válida en tu sistema.
FilePath = "C:miArchivo.txt"

' Obtiene el siguiente número de archivo disponible.
FileNumber = FreeFile()

' Abre el archivo en modo Binario.
Open FilePath For Binary As #FileNumber

' Mover el puntero al byte deseado (por ejemplo, al tercer byte).
Seek #FileNumber, 3

' Lee una cadena del archivo a partir de la posición actual del puntero.
Data = Input(5, #FileNumber) ' Lee los siguientes 5 bytes

' Cerrar el archivo.
Close #FileNumber

Ejemplo en el Modo Acceso Aleatorio

En el modo Acceso Aleatorio, `Seek` se usa para mover el puntero al registro que deseas leer o escribir. Cada registro tiene un tamaño fijo definido por la estructura de datos que estás utilizando. Aquí hay un ejemplo básico:

Type Employee
    ID As Integer
    Name As String * 20
    Position As String * 20
End Type

Dim emp As Employee
Dim FileNumber As Integer
Dim FilePath As String

FilePath = "C:Empleados.dat"
FileNumber = FreeFile()

Open FilePath For Random As #FileNumber Len = Len(emp)

' Mover al tercer registro
Seek #FileNumber, 3

' Leer el tercer registro
Get #FileNumber, , emp

' Cambiar algún valor del registro
emp.Name = "Actualizar Nombre"

' Moverse nuevamente al tercer registro para actualizarlo
Seek #FileNumber, 3

' Escribir el registro actualizado
Put #FileNumber, , emp

Close #FileNumber

En este script, `Seek` se utiliza para mover el puntero a la posición del tercer registro antes de leer (con `Get`) y luego actualizar (con `Put`) el contenido del archivo.

Seek con Archivos de Texto

Cuando trabajas con archivos de texto abiertos en los modos Secuencial de Entrada (`Input`) o Salida (`Output`), el uso de `Seek` es más limitado, porque estos modos son principalmente para la lectura y escritura secuenciales de texto. En estos casos, normalmente no usarías `Seek`.

`Seek` es más común y útil con archivos abiertos en modos Binario o Acceso Aleatorio cuando necesitas un control más detallado sobre la posición de lectura y escritura dentro de un archivo.

Conoce nuestra tienda

Ver más productos

Mejora tu nivel y logra tus objetivo

Excel

Excel cursos

Access

cursos de Access

Power BI

cursos power BI

Ayúdanos a hacer crecer el proyecto

Deja un comentario