Generar reporte txt con delimitación fechas

Estimados experto:
Quería formular la siguiente consulta. Necesito una macro en excel para generar un reporte (.txt) a partir de un rango de datos que poseo en una hoja del libro. Además necesito que el reporte este delimitado entre 2 fechas, que el usuario determinará. (A través de un listbox o cuadro de texto). Por ejemplo en la hoja poseo datos desde el 01/03/2008 al 13/05/2008 pero quiero que el reporte sea desde el 01/05/2008 al 10/05/2008. Las fechas están ordenadas cronológicamente en una hoja en la columna A
Muchas Gracias.

1 respuesta

Respuesta
1
Se me ocurre que puedes usar autofiltros para seleccionar solo las filas que coindicen entre las fechas que indiques y luego guardar el archivo con formato de texto.
Esto puedes automatizarlo mediante una macro, pero creo que necesitas de algún conocimiento de VBA para hacer esto. Si adelantas la macro y necesitas que te ayude con algún detalle con gusto.
Estimado Tavopz:
De antemano gracias.
Yo comencé con esta macro.
La misma me genera un archivo txt con el nombre y carpeta que yo asigne.
Pero el inconveniente que tengo es que me copia de las fila 1 a la 500 (For i = 1 To 500). Necesito que solo me copie las filas que estén comprendidas entre una fecha de inicio y final. Cada fila tiene una fecha distinta en la columna a (por ejemplo en la fila 3 esta la fecha 25/03 y la fila 4 26/03) y las mismas están ordenadas cronológicamente (como un registro) y están situadas en la hoja "Registros".
Sub GenerarTxt()
Application.ScreenUpdating = False
Application.Calculate
Dim strRutaT, strRutaR, strArchivoTextoT As String
Dim NombreArchivoT
Dim i
Dim textot
'nombre y ruta del archivo de texto
NombreArchivoT = Sheets("Carga General").Range("a10") & ".txt"
strRutaT = "C:\Reportes\"
strArchivoTextoT = strRutaT & NombreArchivoT
'abro el txt sobreescribiendo cualquier dato existente (output)
Open strArchivoTextoT For Output As #1
For i = 1 To 500 (aca esta el inconveniente)
'almaceno en texto los valores de cada celda, separados por un punto y coma, para luego identificar el separador en caso de necesitar exportar los datos del txt hacia excel, access, etc, etc
Sheets("Registros").Select
textot = Sheets("Registros").Cells(i, 1) & ";" & Cells(i, 2) & ";" & Cells(i, 3) & ";" & Cells(i, 4) & ";" & Cells(i, 5) & ";" & Cells(i, 6) & ";" & Cells(i, 7) & ";" & Cells(i, 8) & ";" & Cells(i, 9)
'envío el dato al txt
Print #1, textot
Next i
Close #1
MsgBox "Se han terminado de migrar los datos"
End Sub
Pienso que debería quedar como algo así:
Sub GenerarTxt()
Application.ScreenUpdating = False
Application.Calculate
Dim strRutaT, strRutaR, strArchivoTextoT As String
Dim NombreArchivoT
Dim i
Dim textot
'nombre y ruta del archivo de texto
NombreArchivoT = Sheets("Carga General").Range("a10") & ".txt"
strRutaT = "C:\Reportes\"
strArchivoTextoT = strRutaT & NombreArchivoT
'abro el txt sobreescribiendo cualquier dato existente (output)
Open strArchivoTextoT For Output As #1
'indicar las fechas del rango
FechaMenor = InputBox("Indique la fecha mínima")
FechaMayor = InputBox("Indique la fecha máxima")

For i = 1 To 500 '(aca esta el inconveniente)
'almaceno en texto los valores de cada celda, separados por un punto y coma, para luego identificar el separador en caso de necesitar exportar los datos del txt hacia excel, access, etc, etc
Sheets("Registros").Select
If Cells(i, 1) < FechaMayor And Cells(i, 1) > FechaMenor Then
textot = Sheets("Registros").Cells(i, 1) & ";" & Cells(i, 2) & ";" & Cells(i, 3) & ";" & Cells(i, 4) & ";" & Cells(i, 5) & ";" & Cells(i, 6) & ";" & Cells(i, 7) & ";" & Cells(i, 8) & ";" & Cells(i, 9)
'envío el dato al txt
Print #1, textot
End If
Next i
Close #1
MsgBox "Se han terminado de migrar los datos"
End Sub
Sólo modifiqué las líneas resaltadas.
Hola Tavopz. Agradezco tu ingeniosa sugerencia, funciona pero cuando cargo las fechas en los inputbox no me reconoce lo ingresado como una fecha. Por ende las fechas que tengo cargadas en la columna 1 (como te comente) no pueden situarse entre un mínimo y un máximo. ¿Me explico? Ejemplo
Cargo fecha minima: 01/05/05
Cargo fecha máxima: 20/05/05
Lo que tendríamos que hacer y es aquí donde necesito tu ayuda es que las fechas cargadas en los inputbox sean reconocidas como tal para luego efectuar la macro, para aquellos registros que están situados entre estas dos fechas.
Desde ya muchas gracias.
Revisa entonces esta alternativa:
http://es.geocities.com/webtavopz/Files/prueba_guartatxt.xls

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas