web analytics

Plantilla para controlar los cambios en un archivo Excel con VBA

Una vez me pidieron si era posible controlar los cambios que se realizan en un libro Excel sin que el usuario lo sepa, como siempre digo, es solo cuestión de tiempo, con Office y VBA se pueden hacer muchísimas cosas antes de llegar a un límite que difícilmente se alcanzará en un entorno ofimático normal, no hablamos de un ERP para gestionar un negocio de millones de euros ni de un videojuego de última generación, hablamos de ofimática, escribir, calcular y presentar, y para estos menesteres y para el común de los mortales las macros con VBA son más que suficiente.

Obviamente, Excel incorpora un sistema de control de cambios (p.e. aquí), pero además de ser más obvio para el usuario nos obliga a compartir el libro y nos puede limitar en ciertas funciones, pero por otro lado este método con VBA me provocó un problema importante y es que no se pueden deshacer los cambios, cada vez que se ejecuta código VBA la pila de deshacer (undo stack para los amigos) se vacía, y en este tipo de plantilla que se ejecuta VBA todo el rato es un problema, incluso los usuarios mas avezados se darán cuenta que algo sucede con la opción deshacer, desgraciadamente se tiene que decir aquello tan manido de:  “no es un bug es una feature“, hay soluciones más o menos completas para parchear esta característica que pasan por hacer un copia del estado del libro antes de ejecutar la macro, pero como tampoco me acababa de gustar y no tenia tiempo no lo programé.

Entonces hay que valorar que queremos, deshacer las cosas o secretismo, como en este caso se trataba más de investigar sobre el mal uso de un archivo Excel la opción fue hacerlo mediante VBA.

Leer mas…Plantilla para controlar los cambios en un archivo Excel con VBA

Plantilla Excel para los 5 porqués

Una de las cosas que siempre me dicen cuando explico el tema del Lean, TPM, MA y todo ese mejunje de acrónimos, es que todo es de sentido común, y así es y prueba de ello es el 5 porqués ¿Qué es de más sentido común que preguntarse por qué sucede algo? aunque para nuestra desgracia no es tan sencillo como eso y es fácil acabar en tal revoltijo de porqués y preguntas que ya no sabe uno ni que narices intentaba arreglar, lleva práctica saber cuando parar de preguntar porqués y no entrar en bucles infinitos.

Leer mas…Plantilla Excel para los 5 porqués

Importación de datos de consumo eléctrico de PowerStudio Scada a Excel (y II)

En mi post anterior me he quedado en esta cadena:

"http://192.168.1.54:8080/services/user/records.xml?var=" & _
Dispositivo & "." & vari & "?begin=" & FechaInicio & "?end=" & _
FechaFin & "?period=ALL" 

Veamos la construcción de esta llamada:

  • http://192.168.1.54:8080 Es la dirección del servidor donde se encuentra instalado el PowerStudio Scada, y el puerto 8080 donde enviaremos nuestra petición.
  • /services/user/records.xml? Según el Manual PowerStudio Scada esta petición nos devuelve los registros del dispositivo indicado, entre la fecha indicada y con la agrupación indicada que se definen en las siguientes variables:
    • Dispositivo: Es el nombre del dispositivo registrador (CVM) dentro del PowerScada.
    • vari: Es el tipo de medida que vamos a pedir (W,Wh,A,V,etc)
    • FechaInicio: Fecha inicial del periodo del cual queremos los datos.
    • FechaFin: Fecha final del periodo del cual queremos los datos.
    • period=ALL: agrupación de los datos que obtenemos.

Con todo esto hagamos un ejemplo y lo veremos más claro:

Leer mas…Importación de datos de consumo eléctrico de PowerStudio Scada a Excel (y II)

Importación de datos de consumo eléctrico de PowerStudio Scada a Excel (I)

Se puede decir que fué la primera vez que vi la necesidad de utilizar VBA de manera que mi trabajo fuera menos aburrido. Era un nuevo trabajo en una vieja empresa y, entre muchas otras tareas, debía extraer diariamente los datos de consumos eléctricos de manera que se supieran diariamente los ratios de consumo por unidades fabricadas.

Leer mas…Importación de datos de consumo eléctrico de PowerStudio Scada a Excel (I)