domingo, 15 de noviembre de 2009

Escribir y leer archivos .txt usando VBA en Excel

Buenas,
hoy voy a continuar con el post anterior, pero sin tanta contabilidad ni fiscalidad. Este será la primera de 2 entradas donde voy a explicar cómo obtener “el ficherito” para la presentación telemática del modelo 115 a través de la página de la AEAT. En la segunda entrega colgaré el archivo Excel que genera el fichero, pero por ahora me entraré en explicar cómo se escribe y se lee de archivos .txt en Visual Basic 6, cosa que se ha de dominar para entender el meollo de la cuestión.

  • A modo de esquema, éste es el código para crear y/o escribir en un archivo:
    Open [ruta_archivo] For Output As #1
    Print #1, [texto o nombre_variable]
    Close
    #1

  • Para la lectura:
    Open [ruta_archivo] For Input As #1
    Line Input #1, [nombre_variable]
    Close
    #1

Ya sé que cualquier programa de contabilidad mínimamente decente, como A3 o Logic y hasta ERPs más sofisticados como Microsoft Dynamics o SAP -siempre que ésto haya sido desarrollado ya que vale pasta-, generan estos ficheros, ya que sólo tienen que hacer una consulta a sus respectivas bases de datos y obtener como resultado la cadena de texto con el formato que se requiere por la AEAT.
De lo que se trata es abrir los ojos a la creación de ficheros, ya sean .txt o .xml, que nos permitan automatizar procesos contables. Lógicamente Excel no es el mejor entorno para crear aplicaciones de este tipo y desaconsejaría usar ésto en producción al menos que se tratase de la última alternativa. Creando una aplicación Windows usando Visual Studio se tendría una interfaz mucho más desarrollada, la implementación sería más sencilla y el mantenimiento del código sería más fácil. Pero con esto quiero demostrar que con Excel también se puede hacer.

En nuevas entregas desarrollaré el modelo 202 de pago fraccionado sobre impuesto sobre sociedades creando una aplicación Windows en Visual Studio y es posible que más adelante cree un Sitio Web ASP.NET y mostraré como publicarlo en el IIS.
Pues bien éste es el link al Excel y aquí pongo el vídeo donde explico paso a paso los pasos:

Crear y leer archivos de texto en Excel usando VBA (Spanish) from Raúl González on Vimeo.

5 comentarios:

  1. Una pregunta, ¿existe alguna forma de una vez generado un fichero txt (en este caso xml) a través de VBA convertirlo de ANSI a UTF-8? Se trata de un tema de que IE no lee correctamente los ANSI.
    Gracias

    ResponderEliminar
  2. Buenas, lo que me preguntas con VBA se puede hacer pero con .NET yo lo he hecho y creo
    recordar que no era muy difícil ya que se crear el fichero en formato UT-8
    De lo que se trataría de leer el contenido de un fichero en memoria y luego
    crear un nuevo fichero pero con codificación UTF-8.
    http://computingcoding.blogspot.com.es/2012/03/writing-pure-utf-8-file-in-vba-using.html
    Mira en el enlace porque hay una fución que te puede ser útil. Sólo faltaría añadir el código para
    leer el contenido de un fichero de texto en una variable temporal y ya estaría porque luego se crearía el
    nuevo fichero con la codificación deseada.

    Ya me dirás.

    Saludos,

    ResponderEliminar
  3. Se puede crear el archivo en otro lugar?
    Ejemplo: C:\Archivo de programas\

    ResponderEliminar
  4. hola:
    Me gustaría saber si hay una forma "rápida/automática" de abrir archivos .txt y guardarlos como excel
    Muchas gracias!!

    ResponderEliminar