viernes, 25 de septiembre de 2009

Listado de gastos de viaje con VBA en Excel 2007

Pues en este segundo ejemplo de la saga voy a crear un formulario que me permita elaborar un pequeño listado con los gastos de viaje de cada uno de los empleados de una empresa ficticia.
Para las personas que conozcan un poco el IRPF a esto se les llama gastos de locomoción y de manutención y estancia y las empresas están obligadas a llevar un control de estos gastos. Cuando la empresa page el gasto en el que incurre el trabajador estará obligada a retenerle o no en función de si ese gasto es renta del trabajo personal dineraria para el trabajador o está exonerado de tributación. Estos gastos pueden ser exonerados de gravamen (no tributan en el IRPF del trabajador y la empresa no ha de retenerle) según su cuantía y justificación y para ello hay que ir a la Ley del IRPF para ver las condiciones y los límites.

Sin ánimo de meterme en el terreno fiscal, éste es sólo un ejemplo sencillo y básicamente para enseñar la capacidad que tiene VBA para crear soluciones empresariales para el tratamiento de los datos que puede ser muy útil para muchas empresas.
Lógicamente se podría hacer un ejemplo más elaborado usando Visual Basic .NET y utilizando una base de datos SQL, pero todo a su debido tiempo. Lo que caracteriza VBA es su sencilla facilidad de uso que hace que a las pocas horas todo el mundo sepa utilizarlo y sacarle partido y a parte si se entiende bien es un buen trampolín a otros lenguajes de programación superiores en cuanto a complejidad.
Voy a colgar el libro Excel con el ejercicio en cuestión por si alguien lo quiere a efectos didácticos ya que el tutorial es un poco largo y puede ser difícil de seguir. Aquí pongo el link.

Crear un formulario en Excel usando VBA (Spanish) from Raúl González on Vimeo.

lunes, 21 de septiembre de 2009

Visual Basic for Applications usando Excel 2007

Hola de nuevo.
Hoy voy a escribir en el blog un poco sobre VBA (Visual Basic for Applications) y voy a colgar el primero de los 2 vídeos en el que voy a trabajar un poco con VBA en Excel.
El editor de Visual Basic del Office es uno de los pocos lugares en los que todavía queda el lenguaje de programación Visual Basic 6, ya que prácticamente todo se hace con .NET y es posible que en próximas versiones ya se tenga que programar usando el Visual Studio como ya ocurre en otros productos de Microsoft como Expression Blend. Por mí mejor, ya que todo y que mis inicios fueron en Visual Basic 6 (carrera de Económicas y los créditos de libre elección que tanto necesitaba para acabarla :) prefiero usar .NET ya que las posibilidades son infinitas y así le saco más rendimiento al Máster por el mismo precio, jeje.
Programar con el editor de Visual Basic tiene muchas ventajas, sobre todo si se trabaja en un departamento financiero/contable donde Excel es el pan nuestro de cada día. El problema es que no ha tenido mucha aceptación debido a varios problemas:

  1. Cuando abres un archivo con macros te sale una bonita pantalla de bienvenida en la que se te advierte que las macros pueden tener virus, troyanos,… y eso espanta al personal (sólo les faltaba decir que te puede aparecer Risto Mejide). Lógicamente ante tal advertencia la gente ha asociado macros a problemas de seguridad y eso es falso.

  2. Hay gente que considera que grabar una macro es igual a programar, pero al grabar una macro el código que se genera a veces puede ser muy ineficiente, ya que se graba todo, no se crean bucles ni otras estructuras de control como condicionales ni tampoco formularios.

Pues esto es lo que voy a hacer. Voy a crear un formulario con varios controles y voy a llamarlo desde un botón en Excel.


jueves, 17 de septiembre de 2009

Ficheros AEAT

La Agencia Tributaria pone a disposición de programadores y de empresas de desarrollo un amplio abanico de información acerca del diseño lógico de los ficheros para la presentación telemática, así como módulos en escritos JAVA para la validación y la impresión de los diferentes modelos de declaraciones. Este es el link.

Yo me voy a centrar en la declaración de Impuesto sobre el Valor Añadido (IVA) modelo 303 cuyo pdf con el diseño lógico está en el siguiente
link. Por lo que veo lo que se envía a Hacienda es un fichero *.txt con longitud 1353 caracteres cumpliendo las especificaciones dadas. Pues bien utilizando Visual Studio 2008 y los espacios de nombres System.IO y System.Text (para la clase StringBuilder) se puede conseguir elaborar el fichero *.txt.
Para ello con una sencilla aplicación para Windows en VB.NET con un formulario en el que entrar los datos se puede crear un pequeño programa de ayuda, similar al programa de ayuda para la presentación trimestral (o mensual) del IVA que existía años atrás (y si no me equivoco ahora
sólo existe para la última liquidación/declaración de año que se presenta con el Resumen Anual modelo 390). Y en eso me voy a centrar por ahora.

lunes, 7 de septiembre de 2009

Servicios Web

Vamos a retomar la tecnología .NET para tratar el tema de los servicios web. Sobre SAP ya iré colgando más material así como links a páginas interesantes, siempre que tenga un poco de tiempo, aunque últimamente tengo bastante tiempo libre debido a los problemas macroeconómicos (y también micro) que afectan a nuestro país -y a mí más en particular-, de los que ya me gustaría algún día escribir.

Pues bien, dejemos las ideas de bombero a los economistas a sueldo, y voy a escribir sobre el tema de moda en los últimos meses (y no es Cristiano Ronaldo): son los servicios web. Los servicios web nos permiten intercambiar datos entre diferentes aplicaciones con independencia de la plataforma en la que esté instalada y del lenguaje de programación usado y del protocolo. Es decir, puedo tener una aplicación escrita en JAVA y que se ejecute en Linux que consuma un servicio web escrito en C# que este en un servidor de producción en otra parte de del mundo.

Y esa es la magia de los servicios web: el servicio web pasa un xml y la aplicación cliente consumirá este xml sin tener que preocuparme de cómo elaborar el xml –ya que sería bastante complicado tener que ir creando el xml manualmente– ni como se comunican entre sí.

Bueno vamos a crear un servicio web en C# que será consumido por 2 tipos de aplicaciones diferentes: una aplicación de tipo WindowsForms escrita en C# y una aplicación de consola escrita en Visual Basic .NET. En nuestro caso el servicio web se ejecutará en el servidor de desarrollo de ASP.NET de forma local, ya que sólo que queremos probarlo y no publicarlo en un servidor de producción que ejecute IIS, por ejemplo.