GitHub
EXCEL LIBRARY 0.9.2-Beta
¡Automiza Microsoft Excel con AHK v2!
Cargando...
Buscando...
Nada coincide
Inicio

EXCEL LIBRARY

Documentation

Excel Library puede definirse como un adaptador entre los libros de trabajo de Microsoft Excel y ⇱AutoHotkey V2.

Ha sido diseñada con un propóstio muy concreto en mente: Automatizar la lectura de datos locales y la escritura de datos externos mientras el usuario sigue trabajando manualmente en Excel.

La idea surgió de mi experiencia como administrativo en el sector BPO. Observé que gran parte de mi trabajo consistía en contrastar datos procedentes de múltiples fuentes web, y pensé que si pudiera automatizar la recopilación de toda esa información diaria, conseguiría deshacerme de la parte más boluptuosa y cargante de mi trabajo, pertimiéndome centrar mi atención en el análisis de la información, que es lo interesante. La primera parte de esta idea se consolida en Excel Library. La segunda consistirá en la integración de Google Chrome en una librería independiente.

Ya he conseguido implementar varias versiones de este proyecto en mis propios flujos de trabajo, y aunque queda camino por recorrer, el objetivo está cada vez más cerca 🏖.

Características

  • 💡 Minimalista
    No pretende ser un wrapper completo de Microsoft Interop. Su funcionalidad está limitada a su propósito: leer y escribir datos. Aquí no encontrarás una integración completa.
  • 👨‍💻 Compatible con el uso paralelo del usuario
    Controla la interacción mediante eventos y dispone de una función controlador (de la que estoy muy orgulloso) capaz de interrumpir una edición manual para evitar así que el script se rompa.
  • 🔐 Protección de la información
    Pensada para entornos de negocio, separa explícitamente las funciones de lectura y escritura para preservar la integridad de los datos existentes.
    Se recomienda utilizar una hoja de cálculo para leer y otra para escribir, y una vez procesada toda la información requerida de las fuentes externas, se portaría manualmente a la hoja de cálculo principal. Esta funcionalidad es opcional, pero añade una capa extra de seguridad.

Ejemplo básico

Dependencias (OrObject es opcional):

#Include "ExcelLibrary\ExcelManager.ahk"
#Include "Util\OrObject.ahk"

Conectarse al COM de Excel es tan fácil como inicializar ExcelManager:

ExcelMan := ExcelManager(true) ; 'true' permite leer y escribir en la misma hoja

Lo único que necesitas para empezar a automatizar tus libros de trabajo, es definir una hoja de escritura y otra (o la misma) de lectura:

;// Obtener los nombres de todos los libros `.xlsx` abiertos
workbookNames := ExcelMan.GetAllOpenWorkbooksNames()
;// Conectarse al libro1-hoja1 (hoja activa) para escribir
;// Así habilitamos el adaptador de escritura WriteWorkbookAdapter
ExcelMan.ConnectWorkbookByName(ExcelManager.ConnectionTypeEnum.WRITE, workbookNames[1])
;// Conectarse al libro1-hoja1 (hoja activa) para leer
;// Así habilitamos el adaptador de lectura ReadWorkbookAdapter
ExcelMan.ConnectWorkbookByName(ExcelManager.ConnectionTypeEnum.READ, workbookNames[1])

De esta manera habilitamos los adaptadores que nos permitirán meternos en materia:

;// Escribir un objeto en la hoja conectada
;// Utilizamos OrObject para que los objetos se inserten en el orden de creación
;// y no por orden alfabético, pero puedes usar los objetos nativos si no te importa
;// el orden
;// OrObject funciona como un objeto normal, exceptuando la inicialización directa como
;// en el siguiente caso
obj := OrObject(
"Cuenta", "Valor Cuenta 1",
"Nombre", "Valor Nombre 1",
"Apellido", "Valor Apellido 1",
"Dirección", "Valor Dirección 1",
"Teléfono", 689068093
)
ExcelMan.WriteWorkbookAdapter.AppendTable(obj) ; Fíjate en que las cabeceras se normalizan
;// Leer la tabla que hemos creado
objs := ExcelMan.ReadWorkbookAdapter.ReadTable()
;// Mostrar objetos leídos
Loop ExcelMan.ReadWorkbookAdapter.GetRowCount() {
str := ""
for name, value in objs[A_Index].OwnProps() {
str := str name ": " value "`n"
}
MsgBox("[ FILA " A_Index " ]`n" str)
}

Una vez hemos terminado de trabajar con los libros, podemos desconectarlos explícitamente mediante DisconnectWorkbook o simplemente conectar otros.

Comentarios
Las instancias se auto-desechan al cerrar el script.

🚀 ¡Pruébalo en tu script!

Hala, y ahora arremete sin miedo contra la documentación de clases. Ha sido escrita con mimo y es muy sencillita, espero que te sirva 😉.

Métodos y clases esenciales

ExcelManager

Crea un administrador para el COM de Microsoft Excel.

  • Ejecuta Excel automáticamente.
  • Establece la conexión con el COM de Excel.
Atención
Al tratar con datos sensibles, es recomendable no permitir leer y escribir en la misma hoja de cálculo para garantizar la integridad de los datos.
Parámetros
{Boolean}allowReadAndWrite Si permitir que una misma hoja de cálculo se utilice tanto para lectura como para escritura.
Excepciones
{TargetError}Si no ha sido posible iniciar Microsoft Excel automáticamente.
{Error}(0x80004002) Si Microsoft Excel ha rechazado la conexión a su interfaz.

GetAllOpenWorkbooksNames

Obtiene los nombres sin extensión de todos los libros de trabajo abiertos y compatibles (con extensión ".xlsx").

Devuelve
{Array<String>}

ConnectionTypeEnum

Tipos de conexión o de uso admitidos para los libros de trabajo.

Tipos
READ.- Uso limitado a la lectura del libro de trabajo.
WRITE.- Uso limitado a la escritura del libro de trabajo.

ConnectWorkbookByName

Conecta un libro de trabajo abierto mediante su nombre para el tipo de conexión especificado.

  • Toma la hoja de cálculo activa en el momento de la conexión como objetivo del uso.
  • El libro es bloqueado para evitar su cierre y la manipulación del número de hojas.
Parámetros
{ExcelManager.ConnectionTypeEnum}connType Tipo de uso que se le dará al libro.
{String}name Nombre del libro de trabajo objetivo.
{Boolean}lockSheet (Opcional) Si bloquear la hoja de cálculo objetivo impidiendo la modificación y la selección de sus celdas. Por defecto es falso.
Excepciones
{ValueError}Si no existe ningún libro de trabajo abierto y compatible con el nombre solicitado.
{Error}Si no se ha permitido leer y escribir en la misma hoja de cálculo pero se intenta establecer esa conexión.

WriteWorkbookAdapter

Adaptador dedicado a la escritura en libros de trabajo.

ReadWorkbookAdapter

Adaptador dedicado a la lectura de libros de trabajo.