Macro que al abrir archivo csv te agregué una fecha

tengo esta maco: Sub filtrito()
'
' filtrito Macro
'
' Acceso directo: CTRL+a
'
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 1), Array(9, 1), Array(14, 1), Array(21, 1), Array(27, 1)), _
TrailingMinusNumbers:=True
Columns("A:E").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.EntireRow.Delete
Rows("1:1").Select
Selection.Delete Shift:=xlUp
Range("A1").Select
ActiveCell.FormulaR1C1 = "Lon"
Range("B1").Select
ActiveCell.FormulaR1C1 = "Lat"
Range("C1").Select
ActiveCell.FormulaR1C1 = "Tmax"
Range("D1").Select
ActiveCell.FormulaR1C1 = "Edo"
Range("E1").Select
ActiveCell.FormulaR1C1 = "Estación"
Range("F1").Select
ActiveCell.FormulaR1C1 = "Fecha"

Y que en esta columna se rellene con la fecha, la cual es el nombre del archivo

Y se guarde en la misma carpeta de donde se abrió con extensión csv

End Sub

Alguien con mucho más conocimientos me puede auxiliar.

1 Respuesta

Respuesta
3

A partir de esta línea de tu macro: Range("A1").Select

Reemplaza por las siguientes. Notarás que no es necesario seleccionar una celda para enviarle un valor... ni tampoco pasar un texto como fórmula:

'x Elsamatilde
'título a las celdas de fila 1
Range("A1") = "Lon"
Range("B1") = "Lat"
Range("C1") = "Tmax"
Range("D1") = "Edo"
Range("E1") = "Estación"
Range("F1") = "Fecha"
'obtener la parte de la fecha
libro = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 5) 'se le quita la extensión
fechax = Right(libro, 6)
fechaCol = Left(fechax, 2) & "/" & Mid(fechax, 3, 2) & "/" & Right(fechax, 2)
'se obtiene la última fila con datos según col A  (ajustar)
finx = Range("A" & Rows.Count).End(xlUp).Row
'se coloca la fecha en col F controlando posible error de fecha invalida
On Error Resume Next
Range("F2:F" & finx) = CDate(fechaCol)
On Error GoTo 0
'se guarda el libro en la misma carpeta donde estaba
ActiveWorkbook. Save

Hola Elsa:  no me explique muy bien y de igual forma remplace el código que tenia por el que me mandaste: explicare bien lo que hago, y lo que requiero hacer:

1. con botón derecho le doy abrir con excel 2016 a un archivo txt (tmax010111.txt)

2. le aplico la macro con control+a para que ordene las columnas, cambie los títulos de las columnas, quite los espacios y me agregue una nueva columna (Fecha)

3. Manualmente yo tecleo la fecha, que es el nombre del archivo (tmax010111), pero la meto con este formato no importando que sea solo texto (01/01/2011) y la meto en todas las filas hasta la ultima donde hay datos.

4.le doy guardar como archivo csv y con el mismo nombre del txt (tmax010111.csv).

Primero quiero hacerlo de manera un poco rustica para ya después hacer un script o macro para automatizar todo el proceso, ya que son muchos archivos a los cuales hay que aplicarles estos pasos y en lo que voy aprendiendo como hacerlo.

En el pto 2 llamas con Ctrl a la macro Sub filtrito

Allí te modifiqué algunas líneas para colocar los títulos (sin select ni formula) y allí mismo te agregué las instrucciones para resolver el pto 3.

Si no querés que sea fecha quitale la función de conversión Cdate en esta línea

Range("F2:F" & finx) = CDate(fechaCol)

Y quitale la instrucción Save por otra que te guarde en formato csv... supongo que eso lo tendrás en alguna otra consulta por lo que solo me limito a resolver lo de las fechas que es el tema de la consulta.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas