1
GUIA PARA CONECTAR EPANET2.DLL (64 bits) DESDE EXCEL 2016
MICROSOFT VISUAL BASIC PARA APLICACIONES (VBA)
Oscar Tomas Vegas Niño. Email [email protected]Estudiante de Doctorado. Ingeniería del Agua y Medioambiental Universitat Politècnica de València (España)
INTRODUCCIÓN
Microsoft Visual Basic for Applications (VBA), es el lenguaje de macros de Microsoft Visual Basic que se utiliza para programar aplicaciones Windows. VBA, es un subconjunto casi completo de Visual Basic 5.0 y 6.0, que viene integrado en aplicaciones de Microsoft Office. Cualquier cosa que se pueda programar en Visual Basic 5.0 o 6.0 se puede hacer también dentro de un documento de Office, con la limitación que el producto final no se puede compilar separadamente del documento, hoja o base de datos en que fue creado [1].
La Toolkit de Epanet puede integrarse en cualquier entorno de programación nativo o en las propias aplicaciones que ofrecen muchos paquetes de software propietario, como Excel, AutoCAD, ArcGIS, o bien libres como Open Office, gvSIG, QSIG, etc., [2].
Un grupo de investigadores, de distintas partes del mundo, deciden formar una comunidad [3] para seguir trabajando en la actualización (corrección de errores) y ampliación (nuevas funcionalidades) del código abierto de la librería de Epanet (epanet2.dll). La versión última es la 2.1, y existen dos archivos compilados para 32 y 64 bits. También, cuentan con un foro de discusiones para desarrolladores y usuarios de Epanet.
[4] en su página web personal, posteó una noticia sobre un complemento desarrollado para Excel de 32 bits, en el que se utiliza las funciones de Epanet sin escribir una línea de código. Este complemento utiliza la versión 2.0 de la librería de Epanet (build 2.00.12). Para poder utilizarlo en Excel de 64 bits, hay que seguir unas indicaciones descritas en los comentarios del mismo post. El objetivo de esta macro es poder utilizar los datos que provienen de un SCADA, analizarlos, y graficarlos rápidamente. También es posible manipular los datos de entrada desde la Excel, enviarlos a la Toolkit de Epanet, y obtener respuesta de cálculo. La utilidad que se persigue en esta guía es poder ayudar a entender como conectar el motor de cálculo de Epanet (epanet2.dll para 64 bits) en el nuevo entorno de Excel 2016, y poder automatizar tareas que se puedan desarrollar en el área de operaciones de un sistema de abastecimiento de agua potable.
Si deseas aprender a programar desde Excel con VBA, te recomiendo que visites las páginas web [5] y [6]. En estas dos páginas podrás encontrar información para empezar a crear macros desde cero.
2 SECUENCIA DE PASOS
A. Mostrar la pestaña “Programador”
La pestaña Programador es utilizada en la creación de macros y controles de formulario. De no estar habilitada, esta pestaña no se mostrará en la cinta de opciones de Excel. Para mostrarla, haremos clic en el Menú Archivo, y luego otro clic en la sección Opciones del panel izquierdo. Se mostrará el cuadro de diálogo Opciones de Excel y haremos clic en la opción Personalizar cinta de opciones. En la sección Pestañas principales, haremos clic en el cuadro de selección Programador y aceptamos los cambios efectuados. En la Figura 1 se muestra los pasos descritos anteriormente.
Figura 1. Mostrar pestaña Programador
Otra forma de acceder de manera rápida al cuadro de Opciones de Excel es haciendo clic derecho en la Cinta de Opciones, y luego clic en el comando Personalizar la Cinta de Opciones.
La pestaña Programador (Figura 2) tiene los comandos necesarios para crear macros y también para ejecutar macros previamente grabados. Desde esta pestaña podemos abrir el Editor de Visual Basic que nos permitirá escribir código VBA.
En la versión Excel 2013, esta pestaña se llama “Desarrollador”.
3 B. Preparar el módulo epanet2
Para hacer uso de las funciones escritas en la librería de Epanet, debemos primero que declarar las constantes globales y las funciones dentro de un módulo. Desde la pestaña Programador, haremos clic en el comando Visual Basic y se nos abrirá el editor de Microsoft VBA. Dentro del editor vamos al Menú Insertar y hacemos clic en Módulo. Este primer módulo queda clasificado dentro de la carpeta Módulos y lleva por nombre Modulo1 (Figura 3).
Figura 3. Insertar Módulo1 al Proyecto
Cambiaremos los nombres por defecto al proyecto y módulo. El proyecto se llamará ConectarAPIEpanet y el módulo epanet2 (Figura 4).
4 [7] realizó unos arreglos al archivo de encabezado (epanet2.bas) para utilizar la nueva librería de Epanet (versión 2.1) desde Visual Basic 6.0. En nuestro módulo epanet2, copiaremos el contenido escrito desde la línea 3 hasta la 233.
Las 74 funciones copiadas en el módulo epanet2 se pintan de rojo (Figura 5). Esto se debe a que las funciones están declaradas para trabajar sobre Excel de 32 bits. En Excel de 64 bits se debe añadir la palabra clave PtrSafe después de la instrucción Declare (Figura 6) para corregir el error.
Figura 5. Error al declarar funciones de Epanet
Figura 6. Declaración correcta de funciones de Epanet
Lo siguiente será guardar nuestro archivo. Para ello vamos a escribir un nombre, por ejemplo, ConectarAPIEpanet, y seleccionamos el tipo de documento Libro de Excel habilitado para macros (Figura 7).
5 Figura 7. Guardar archivo ConectarAPIEpanet
C. Copiar epanet2.dll en la carpeta System
En la nueva versión de la librería de Epanet (versión 2.1), para 32 y 64 bits, se han corregido errores y añadido nuevas funcionalidades. Toda la documentación, acerca de esta nueva versión, se puede consultar desde la página web de WaterAnalytics: http://wateranalytics.org/EPANET
Las librerías de Epanet, de 32 y 64 bits, se pueden descargar desde el siguiente enlace: https://github.com/OpenWaterAnalytics/EPANET/releases (Figura 8).
6 Al descomprimir, buscaremos la carpeta de nombre 64 (Figura 9), y copiaremos el archivo epanet2.dll en el siguiente directorio C:\Windows\System (Figura 10).
Figura 9. Archivo epanet2.dll de 64 bits
Figura 10. Copiado de epanet2.dll en la carpeta System D.Preparar hoja de trabajo
En caso de haber cerrado nuestra hoja de cálculo habilitada para macros de nombre ConectarAPIEpanet, la volvemos abrir y escribimos tres etiquetas y dos botones como se puede ver en la Figura 11.
7 Para añadir los dos botones que se muestran en la Figura 11, debemos ir a la pestaña Programador y hacer clic en Insertar. Un cuadro se despliega (Figura 12) y se elige el control Botón (control de formulario). Al hacer clic izquierdo en la celda “C10” para dibujar el control, se nos muestra un cuadro de diálogo flotante, donde nos pide que asignemos una macro, pero que por el momento no se asignará ninguna macro. El mismo proceso se repite para el segundo botón, o puede utilizarse las opciones de copiar y pegar.
Figura 12. Insertar los controles de tipo botón
Los botones añadidos muestran por defecto el nombre Botón, pero se puede modificar al posicionarse encima de ellos, hacer clic derecho y seleccionar Editar texto.
E. Trabajar dentro de Microsoft VBA
Para empezar a escribir líneas de código que luego se asocian a los botones Abrir y Aceptar, hay que añadir primero un módulo nuevo. Entonces, desde el menú Programador nos dirigimos a la opción Visual Basic y se nos abrirá el Editor de Visual Basic. Dentro del Editor hacemos clic en el menú Insertar y añadimos el nuevo módulo y cambiamos el nombre por defecto por Procesos.
Dentro del módulo, se escribirá los procedimientos BuscarFicheroInp y EjecutarMacro que serán asignados a los botones Abrir y Aceptar respectivamente. El código de cada uno de ellos se puede ver en las Figuras 13 y 14. Para asignar los procedimientos anteriores a los botones, tan sólo es posicionarse en cada uno de ellos, hacer clic derecho y elegir la opción Asignar macro…, en la caja de texto se escribe el nombre de cada procedimiento a asociar a los botones (Figura 15).
8 Figura 13. Procedimiento BuscarFicheroInp
9 Figura 15. Asociar macro BuscarFicheroInp al botón Abrir
F. Ejecutar macros
Las macros se ejecutan en el siguiente orden. Primero se ejecuta el botón Abrir, cuyo código asociado muestra un cuadro de diálogo que ayuda a navegar por el ordenador, y memorias de disco extraíbles, y seleccionar un archivo Inp de Epanet. En la hoja de cálculo se escribirá la ruta del archivo seleccionado. El botón Aceptar, ejecuta las funciones de la librería de Epanet para determinar el número total de nudos (nudos de caudal, embalses, depósitos) y líneas (tuberías, bombas y válvulas), y la fórmula de pérdidas de energía utilizada (Figura 16).
Para descargar el archivo ConectarAPIEpanet, con las macros desarrolladas, hacer clic en el siguiente enlace: https://goo.gl/AzBzvA
10 REFERENCIAS
[1] Wikipedia. [En línea]. Disponible en:
https://es.wikipedia.org/wiki/Visual_Basic_for_Applications. [Accedido: 25-dic-2017].
[2] O. Vegas, F. Martínez, J. Alonso, y V. Tzatchkov, Iniciación a la programación con la Toolkit de Epanet v2.00.12 en un Entorno Windows, 1.a ed. Jiutepec, México: Instituto
Mexicano de Tecnología del Agua, 2017. [3] Wateranalytics. [En línea]. Disponible en:
http://wateranalytics.org/EPANET/release_2_1.html. [Accedido: 25-dic-2017]. [4] E. Salomons, «Water Simulation». [En línea]. Disponible en:
http://www.water-simulation.com/wsp/2014/04/11/epanet-excel-add-in/. [Accedido: 25-dic-2017]. [5] Q. Arranz, Excel y VBA. [En línea]. Disponible en: https://excelyvba.com/.
[Accedido: 25-dic-2017].
[6] Excel Avanzado. [En línea]. Disponible en: http://www.excel-avanzado.com/. [Accedido: 25-dic-2017].
[7] E. Salomons, Github - OpenWaterAnalytics. [En línea]. Disponible en:
https://github.com/OpenWaterAnalytics/EPANET/blob/master/include/epanet2. bas. [Accedido: 25-dic-2017].