En un foro me preguntan como se hace una Macro de Excel para extraer datos de varios archivos, en el caso planteado eran al rededor de 50 archivos de los que se deseaba sacar información, lo cual realizarlo a mano demandaría muchísimo tiempo y esfuerzo; en el ejemplo que se presenta se ha reducido el número de archivos a 12, pero no inválida en nada la macro ya que se puede usar para uno, cien o los archivos necesarios de los cuales extraer información.
Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.
Primero se establece cual es el nombre del archivo actual, variable que se usa luego en la macro; una vez determinado y asignado a una variable el nombre del archivo actual; se procede a realizar un bucle con los comandos For…..Next i; el cual tiene como objeto abrir todos los archivos que se le asignan a la macro, en este caso son 12 los archivos, pero pueden 1, 100 o más; luego mediante cadenas de texto se forma el path del archivo, es decir donde se va guardar el archivo Csv generado; por último se adiciona una hoja nueva, estableciéndose el nombre de la hoja, se guarda y cierra el libro; para poder ver el funcionamiento de ejemplo aquí presentado, se debe descargar el archivo rar; descomprimirlo en alguna carpeta y luego copiar la dirección donde se guardaron los archivos, en la macro; se debe cambiar la dirección que figura, por la dirección de la carpeta donde quedaron los archivos descargados.
El post guarda excel automáticamente cada minuto, se incorpora un ejemplo de VBA que tiene cierta relación y se complementa con el actual, ya que se crea un procedimiento de VBA bastante interesante, guardando automáticamente el libro cada minuto para evitar pérdida de información, lo cual hace una macro muy útil.