Llevo unas semanas peleando con el lenguaje de programación del Office de Microsoft, con el VBA, el Visual Basic para Aplicaciones. El lenguaje de macro de la suite de Microsoft.
Concretamente estoy sobre todo usando el VBA para Excel. Llevo casi un mes (eso por cierto se nota en las actualizaciones del blog, que han bajado un poco, pero no puedo estar en todo) preparando un cambio en la tienda por Internet. Vamos a pasar de 2.500 productos como tenemos ahora, a 8.000 artículos. Y con la Excel he montado el módulo de actualización de precios entre los proveedores y nuestra tienda.
Estuve unos días pensando con que lenguaje de programación iba a realizar la tarea. Tengo precios de 7 proveedores diferentes. Dos me lo envían en XML, otro en CSV, el cuarto en TXT y los tres que quedan en XLS. Probé con el Visual Objects, el lenguaje de programación con el que tenemos hecha la aplicación de facturación de la tienda, pero su soporte de XML es muy pobre. Y si convertíamos de XML a otro formato de archivo, perdíamos mucha información. Luego estuvo con PHP, pero no conseguía afinarlo bien. Así que al final me puse con la Excel y tres mil líneas de código después, ya lo tengo terminado.
El sistema recoge los precios de los proveedores como entrada y como salida genera un fichero en el formato que espera la tienda web, para actualizar los artículos.
Hacía tiempo que no me ponía a programar con la Excel. La verdad es que ha sido hasta divertido. Lo bueno de usar la Excel para programar, es que en la mayoría de PCs donde me siento, la tengo instalada. Así que llevaba el proyecto en el pendrive y he trabajado con él en varios PCs.
Os dejo algunos enlaces de donde saque ideas e inspiración:
Y algunas otras páginas que seguro que me dejo. La verdad es que si trabajas en una empresa grande como yo, y no dispones de acceso a herramientas de programación, conocer estos lenguajes de macros, puede sacarte más de una vez de un apuro. Pero eso sería otra historia.
Eso si, uno de los ficheros de salida tenía que tener formata CSV. Y la salida de la Excel no va fina con ese tipo de ficheros. Así que ese fichero después de crearlo con la Excel, lo abro con OpenOffice y lo grabo en formato CSV desde este último.
10 Comentarios
Comentarios Cerrados
Yo he trabajado muchos años con VBA, pero la mayor parte con el word. También le he dado algo al excel.
Cuando he tenido que crear un CSV, lo he hecho a “capón”, es decir, el csv es un formato muy simple, lo que he hecho es recorrer filas y columnas y crearmelo a pelo escribiendo en un archivo. Si sabes exactamente como es el formato que debes de obtener, el realiazr desde excel una salida escribiendo en un archivo CSV es coser y cantar.
Visual Objects!!!! Casi nada: el entorno de desarrollo que CA creó para sustituir al omnipresente (entonces) Clipper (mi aplicativo de gestión, todavía está en Clipper). Lo siento, Tendero, pero cuando he visto el nombre, no he podido evitar el comentario.
Por cierto, la comunidad Clipper sacó dos entornos compatibles opensource: Harbour y XHarbour (no los he llegado a tocar, pero tienen buena fama y veo que son productos consolidados)
Yo sigo usando Visual Objects. En su momente me cree una biblioteca de clases (con lo típico: altas, bajas, modificaciones, impresión, búsquedas, permisos…) y cuando me pongo a realizar una aplicación ya tengo el 70% hecho sin tocar nada…
Pero en este caso me costaba mucho sincronizar los datos de entrada y salida, sobre todo por problemas del formata DBF
El consejo viene de la leche una vez que ya lo has hecho, pero con Perl te hubieras ahorrado un montón de curro =)
No he tocado nada de Perl. El problema es que me conozco y si me pongo con un lenguaje nuevo, no hago el trabajo…
Pues es ir poco a poco porque es muy agradecido. Según vas conociendo cosas del lenguaje le encuentras aplicación y piensas ¡cuántos años sin conocerte!. Ves onliners (programas simples desde línea de comandos) a los que solo les falta fregar la cocina.
Yo he usado siempre VBA con Access, y la verdad es que amplias su funcionalidad muchísimo. Lo que pasa es que si conoces Visual Basic hay cosas que te parecen “raras”.
Dasmandr tiene razón. Yo he utilizado perl para unificar entradas que tenía que sacar de archivos excels, xml, csv, lotus notes y hasta sharepoint y realmente me ha salvado la vida. No creo que lo hubiera podido hacer de otra manera.
Ahora, también es cierto que como perl se adapta bien a los problemas que suelo tener, es lo que me resulta más sencillo para programar. Es decir “todo parece un clavo para el que anda con martillo en la mano”
Perl por Dios, Perl
Gracias por los links. Estoy metido en un proyecto de excel puro, pero pretenden que mueva un transbordador con el. VBA logra hacer todo lo que he necesitado hasta el momento