Vamos a resolver un planteamiento que me lo han realizado un par de veces, concerniente a como llevar los datos que tengo en un XLS hacia un TXT. Espero que mis amigos tengan a bien disculparme la demora que estoy teniendo en postear temas nuevos y/o responder a las distintas consultas que recibo en mi casilla de correo, pero me han trasladado en el trabajo, hacia otra ciudad, y la verdad que las cosas se complicaron en lo referente al tema "tiempo libre". Y estimo que recién hacia fines del presente año voy a poder normalizarlo.
Luego de las disculpas del caso, sigamos. El ejemplo que me pasa mi lector es un libro de Excel con 20 hojas de cálculo, en donde se observa una tabla por hoja; a cada una de ellas debe guardarla con formato TXT
Como casi todo en programación, hay varias formas de resolverlo, pero este código que les dejaré es sencillo y práctico, ajustándose perfectamente a lo solicitado.
Supongamos que nuestro libro tiene 3 hojas (lo que equivale a tres tablas), muy distintas entre sí:
legajo, nombre y fecha de nacimiento
[+/-] Ver el resto / Ocultar
últimos 6 meses de ventas
algo mas, para agregar al ejemplo.
Aquí lo importante es resaltar la rapidez y facilidad del método que llevaremos a cabo, dado que podremos almacenar una gran cantidad de información en formato TXT, por ejemplo, a modo de back up o bien para enviar esos datos a otros procesos. Otro aspecto a tener en cuenta es que Excel nos respetará el formato tabular de la información, con lo cual nos ahorraremos mas de un dolor de cabeza a la hora de recuperar esos registros.
Sin mas preámbulos, pasemos al código:
Sub HojasATxt()
'variable del tipo Worksheet (hoja)
Dim Hoja As Worksheet
'quito el refresco de pantalla
Application.ScreenUpdating = False
'quito las alertas de Excel
Application.DisplayAlerts = False
'y con este bucle recorro todas y cada una de las
'hojas del libro:
For Each Hoja In ActiveWorkbook.Sheets
'selecciono:
Hoja.Select
'copio: al copiar el objeto Hoja se crea automaticamente un
'nuevo libro:
Hoja.Copy
'cuidado, ver aclaración:
ActiveWorkbook.SaveAs Filename:="C:\DELL\" & Hoja.Name & ".txt", _
FileFormat:=xlText, CreateBackup:=False
'cierro el libro activo (q es un txt)
ActiveWorkbook.Close
'y activo el libro actual, que es donde tengo la macro
ThisWorkbook.Activate
Next
'destruyo el objeto, para liberar recursos
Set Hoja = Nothing
End Sub
(*) si bien el código se encuentra comentado y no encierra dificultad en su lectura, esa línea es muy importante: el parámetro Filename debe contener la ruta completa de guardado, incluyendo el nombre y extensión del archivo (txt para este caso). Cuando prueben este ejemplo es sus ordenadores, asegurense de cambiarlo por uno válido.
Al ejecutar la macro:
vemos en el directorio especificado las tres hojas guardadas como archivos TXT
Si abro uno de ellos:
bien, justo lo que buscamos.
Este tipo de trabajo es conveniente llevarlo a cabo con tablas homogéneas, para luego tener un mayor control sobre ellas a la hora de recuperar los datos. Aquí les dejo el
link al archivo y
otro hacia un ejemplo muy muy parecido en este mismo blog, con algunos agregados y demás que no aplicaban en el trabajo que termino de levantar.
Salu2.xlsx
Comentarios
Publicar un comentario