¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí

Las interacciones con Windows

Las API de Windows

1. Definición

Una API (Application Programming Interface) es una serie de funciones de sistema del sistema operativo, que se pueden llamar a partir de VBA. Estas funciones son accesibles desde los archivos DLL que hay en los directorios de sistema.

En algunos casos, el uso de API es preferible, fundamentalmente:

  • El uso de información de sistema que no se explota de manera nativa con VBA.

  • La posible mejora del rendimiento del código. VBA no es el lenguaje más rápido, pero se pueden utilizar las API desarrolladas en otros lenguajes más rápidos, para optimizar el rendimiento.

  • La optimización de la aplicación en términos de peso. El uso de API es menos costoso que el de ActiveX.

Es frecuente que el uso de las API provoque algunas reservas entre los desarrolladores, fundamentalmente por la baja calidad de la documentación disponible, la falta de información sobre la programación interna de las API, así como porque manipular las funciones del sistema es una fuente de riesgos para la estabilidad de las aplicaciones y del sistema operativo dentro del entorno informático.

2. Declaración de una API

La llamada a las funciones API en el cuerpo del programa se hace igual que para cualquier otra función o procedimiento. Sin embargo, hay una diferencia principal durante la declaración.

a. Sintaxis general

La sintaxis general de la declaración de una API es la siguiente:


[Private o Public] Declare Function o Sub Nombre Lib "NombreLibrería" 
[Alias "NombreAlias"] [([[ByVal] variable [As type] [,[ByRef] variable 
[As type]]...])] [As Type]
 

Instrucción

Descripción

Private o Public

Permite definir el ámbito de la función, como cualquier otra función o procedimiento en VBA.

Declare

Declare es la palabra clave obligatoria que se usa para la llamada a un procedimiento externo al programa.

Function o Sub

Permite definir si el recurso externo es una función o un procedimiento, como es el caso en VBA.

Nombre

Representa el nombre del procedimiento que se llama. Se debe respetar la norma de nomenclatura de VBA para que el nombre sea válido.

Lib

Lib es la palabra clave obligatoria que indica la ubicación de la librería Nombrelibrería.

NombreLibrería

Representa el nombre de la librería de sistema o la ubicación...

El objeto FileSystemObject

1. Introducción

Más allá de las funciones básicas que ofrece VBA para acceder y manipular los archivos y directorios, hay un objeto muy práctico. El objeto FileSystemObject está disponible desde la librería Microsoft Scripting Runtime.

2. Jerarquía de objeto

El siguiente esquema representa la jerarquía de los principales objetos y colecciones del tipo FileSystemObject.

images/RI13_12.png

3. Gestión de los discos

Es posible de recorrer la colección de los discos Drives. Un disco es un objeto Scripting.Drive.

a. Propiedades del objeto Drive

Propiedad

Descripción

AvailableSpace

Representa el espacio disponible en el disco, expresado en bytes.

DriveLetter

Representa la letra utilizada por el sistema para acceder al disco.

DriveType

Representa el tipo de disco (CDRom, Fixed, RamDisk, Remote, Removable o UnknownType).

FileSystem

Representa el tipo de sistema del disco (NTFS, FAT).

FreeSpace

Representa el espacio libre en el disco, expresado en bytes.

IsReady

Representa un valor booleano que indica si el disco está disponible (por ejemplo, presencia de una clave USB en el puerto USB frontal).

Path

Representa la ruta de acceso al disco (G: por ejemplo).

RootFolder

Representa la carpeta raíz (G:\ por ejemplo).

SerialNumber

Representa el número de serie del disco.

ShareName

Representa el nombre compartido del disco (devolverá una cadena de caracteres vacía si el disco no está compartido).

TotalSize

Representa el tamaño total del disco, expresado en bytes.

VolumeName

Representa el nombre de la unidad del disco (ejemplo DATA).

b. Ejemplo

A continuación se muestra un procedimiento que lista los discos disponibles, indica para cada uno su letra, espacio disponible, tipo y sistema:


Sub Lista_de_discos()  
    Dim FSO As New Scripting.FileSystemObject  
    Dim drv As Scripting.Drive  
    For Each drv In FSO.Drives  
           If drv.IsReady Then  
                 Debug.Print drv.DriveLetter & " " & _   
                        drv.AvailableSpace & " " & _  
                        drv.DriveType...

Los archivos de texto

Los archivos de texto están entre los elementos más manipulados en programación, ya sea para enviar o para recibir información. Por tanto, es importante tratar su manejo en esta sección. Como recordatorio, un archivo de texto es un archivo compuesto por una o varias líneas, separadas por una combinación de caracteres de retorno de carro y cambio de línea: vbCr & vbLf e incluso vbCrLf.

1. Acceso secuencial

Históricamente, el primer medio de acceder y leer un archivo en VBA es el acceso secuencial: en primer lugar, se abre el archivo con el método Open y se le asigna un número hasta su cierre.

a. Sintaxis general

La sintaxis general de apertura de un archivo es la siguiente:


Open Ubicación For Input|Output|Append As Numero
 

El archivo se puede abrir en modo lectura, en modo escritura o en modo adición. 

Para cerrar el archivo cuando se ha terminado de usar, la sintaxis general es la siguiente:


Close Número
 

b. Lectura

Para abrir un archivo en modo solo lectura, la sintaxis es la siguiente:


Open Ubicación For Input As Número
 

La variable Número no se puede utilizar varias veces mientras esté abierto el archivo al que se ha asignado dicho número. Para no tener conflicto con la numeración, la función FreeFile devuelve un valor correcto comprendido entre 1 y 255.


Dim NumArc As Integer 
NumArc = FreeFile 
Open "D:\ENI\ejemplo.txt" For Input As NumArc
 

Si la numeración entre 1 y 255 no es suficiente, queda la posibilidad...