¡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í
  1. Libros
  2. VBA Excel (versiones 2021 y Microsoft 365)
  3. Programación en Windows
Extrait - VBA Excel (versiones 2021 y Microsoft 365) Programar en Excel: Macros y lenguaje VBA
Extractos del libro
VBA Excel (versiones 2021 y Microsoft 365) Programar en Excel: Macros y lenguaje VBA Volver a la página de compra del libro

Programación en Windows

Presentación de las API

La interfaz de programación de Windows API (Application Programming Interface) ofrece funciones que le permiten controlar los aspectos más ínfimos del sistema. Puede extender y personalizar sus aplicaciones de Excel llamando a funciones de Windows API desde VBA. Si bien Excel continúa evolucionando y su lenguaje de programación nativo (VBA) integra cada vez más funciones de sistema, para ciertas tareas se deben usar las funciones API.

Una API es una serie de funciones que se pueden usar para trabajar con un componente, una aplicación o un sistema operativo. Se compone generalmente de uno o más archivos DLL (Dynamic Link Library o biblioteca de vínculos dinámicos).

La API más usada es la API de Windows, que incluye las DLL que forman el sistema operativo Windows. Cada aplicación de Windows interactúa directa o indirectamente con la API de Windows. Esto garantiza un comportamiento coherente de todas las aplicaciones que funcionan bajo Windows.

Las DLL de la aplicación Windows más usadas son las siguientes:

Kernel32.dll

Funciones de bajo nivel del sistema operativo, tales como la administración de memoria y de recursos.

User32.dll

Funciones de administración de Windows, tales como el tratamiento de mensajes, relojes, menús y comunicación.

GDI32.dll

Biblioteca GDI (Graphics Device Interface), que contiene las funciones...

Llamar a una función de la API de Windows

Para llamar a una función de la API de Windows, se debe declarar con la instrucción Declare en la sección Declaraciones de un módulo del proyecto (generalmente un módulo específico de los procedimientos generales de la aplicación).

1. Sintaxis de la instrucción Declare

Se deben respetar las minúsculas y mayúsculas en los nombres de funciones y procedimientos de las DLL.

Declaración de un procedimiento API:

[Public|Private] [PtrSafe] Declare Sub <nom_proc> Lib "<nom_DLL>"_ 
[Alias <nom_alias>] [<lista_argumentos>]  

Declaración de una función API:

[Public|Private] [PtrSafe] Declare Function <nom_fonc> Lib "<nom_DLL>"_ 
[Alias "<nom_alias>"] [([lista_argumentos])] [As <type>] 

PtrSafe

Palabra clave que se debe utilizar en las ver-siones de 64 bits de Excel.

nom_proc, nom_fonc

Nombre del procedimiento o de la función usada en Visual Basic.

nom_DLL

Nombre de la DLL.

nom_alias

Nombre del procedimiento o de la función en la DLL.

lista_argumentos

Lista de los parámetros de la API.

type

Tipo del valor que devuelve la función.

2. Paso de argumentos

Las funciones y procedimientos de las DLL están escritos principalmente en lenguaje C y hacen, por lo tanto, referencia a su sintaxis. Por eso, el paso de argumentos a un procedimiento...

Lista de funciones API de Windows

Esta lista incluye las funciones de la API de Windows usadas habitualmente. Los ejemplos de uso de algunas de estas funciones se describen en la siguiente sección. 

GetWindowsDirectory

Devuelve la ruta completa del directorio de Windows.

GetSystemDirectory

Devuelve la ruta completa del directorio de sistema de Windows.

GetSystemInfo

Devuelve una serie de datos sobre el sistema. Estos datos se almacenan en una estructura de tipo SYSTEM_INFO.

GetActiveWindow

Devuelve el identificador de la ventana activa.

FindExecutable

Retorna el nombre y la ruta de la aplicación asociados a un archivo (aplicación asociada a la extensión del archivo).

FindWindow

Devuelve el identificador de la ventana en función de su nombre y de la clase a partir de la cual se definió.

GetPrivateProfileString

Devuelve una opción de un archivo Ini a partir de un nombre de sección y de clave.

GetTempPath

Devuelve la ruta a la carpeta temporal del sistema.

GetUserName

Devuelve el nombre del usuario.

WNetGetUser

Devuelve el nombre de login de red.

SetFocus

Pone el foco de entrada en la ventana referenciada por su identificador.

Ejemplos de uso de funciones API de Windows

1. Recuperar el directorio Windows

Declaración de la función API:

' Esta función API devuelve el directorio Windows ' 
Private Declare Function GetWindowsDirectory _ 
           Lib "kernel32" Alias "GetWindowsDirectoryA" _ 
           (ByVal lpWindowsDir As String, _ 
           ByVal lpWindowsHeight As Long) _ 
           As Long 

Llamada de la función API:

Function GetWinPath() As String 
 
' Esta función VBA devuelve el directorio Windows 
Dim StrResult As String 
Dim StrProfile As String 
 
StrResult = String(255, " ") 
StrProfile = GetWindowsDirectory(StrResult, 255) 
 
  ' Corta la cadena al primer carácter nulo 
If StrProfile <> "" Then 
   StrResult = Trim(StrResult) 
   GetWinPath = Left(StrResult, InStr(1, StrResult, vbNullChar) - 1) 
Else 
   GetWinPath = "" 
End If 
 
End Function 

2. Abrir la calculadora de Windows

Este ejemplo prueba si la calculadora de Windows está activa, y la inicia si no lo está.

Aquí...

El objeto FileSystemObject

El objeto FileSystemObject proporciona acceso al sistema de archivos de un equipo. Permite especialmente buscar, crear, eliminar y mover archivos o carpetas.

1. Métodos

Métodos relativos a los archivos

CopyFile

Copia uno o más archivos de un lugar a otro.

CreateTextFile

Crea un nombre de archivo especificado y devuelve un objeto TextStream que se puede utilizar para leer o escribir en un archivo.

DeleteFile

Elimina un archivo especificado.

FileExists

Devuelve un valor booleano que indica si existe el archivo especificado.

MoveFile

Mueve uno o más archivos de un lugar a otro.

OpenTextFile

Abre el archivo especificado y devuelve un objeto TextStream que se puede utilizar para leer el archivo o agregar datos.

Métodos relativos a las carpetas

CopyFolder

Copia una carpeta de un lugar a otro.

CreateFolder

Crea una carpeta.

DeleteFolder

Elimina una carpeta especificada junto con su contenido.

FolderExists

Devuelve un valor booleano que indica si existe la carpeta especificada.

MoveFolder

Mueve una o más carpetas de un lugar a otro.

Métodos relativos a las unidades de disco

DriveExists

Devuelve un valor booleano que indica si existe la unidad especificada.

GetDrive

Devuelve un objeto Drive que corresponde a la unidad para la ruta especificada.

GetDriveName

Devuelve una cadena que contiene el nombre de la unidad para una ruta especificada. 

2. Propiedades

Drives

Devuelve una colección formada...