Cuando ejecuto la macro las fechas se guardan al revés

Hola nuevamente, tengo la siguiente macro;

Toma los archivos con formatos .xlsm que están en la carpeta 1 y los guarda en la carpeta 2 pero con formato .csv. En las columnas A, E y I, tienen fechas y el formato es DD/MM/AAAA, pero cuando ya están en .csv las fechas quedan MM/DD/AAAA.

Por favor, ayudame a solucionarlo.

Sub grabar_xlsm_como_csv()
mio = ActiveWorkbook.Name ChDir "C:\1\"

archi = Dir("*.xl*") Do While archi <> ""
Workbooks.Open archi
nombre = ActiveWorkbook.Name
ruta = "C:\2\"
ActiveWorkbook.SaveAs Filename:=ruta & nombre & ".csv", FileFormat:=xlCSV, CreateBackup:=False
ActiveWorkbook.Close False
archi = Dir() Loop
End Sub

1 Respuesta

Respuesta
1

Se me ocurre la siguiente solución: Antes de guardar como csv el archivo, las columnas con fechas, las vamos a pasar a texto en una hoja de “paso” que debes crear en el mismo libro donde tienes la macro, luego de que se pasan a texto las fechas, las columnas se reemplazan por las fechas de texto, es decir, pasamos las fechas a la hoja paso, luego copiamos las fechas de paso al libro original. Por último guardamos como csv.
Cuando abras el archivo CSV, deberás considerar que en las columnas A, E, I, tienes un espacio antes de la fecha, si quitas el espacio, te quedará como fecha.
Te anexo el código.

Sheets("paso"). Cells. Clear
archi = Dir("libro3.xlsx")
'ruta = "C:\trabajo\"
ruta = "C:\2\"
Do While archi <> ""
    Workbooks.Open archi
    nombre = ActiveWorkbook.Name
    'nombre = Left(nombre, InStrRev(nombre, ".") - 1)
    'ruta = "C:\2\"
    For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
        If IsDate(Cells(i, "A")) Then
            Workbooks(mio).Sheets("paso").Cells(i, "A") = " " & Cells(i, "A")
        Else
             Workbooks(mio).Sheets("paso").Cells(i, "A") = Cells(i, "A")
        End If
        If IsDate(Cells(i, "E")) Then
            Workbooks(mio).Sheets("paso").Cells(i, "E") = " " & Cells(i, "E")
        Else
             Workbooks(mio).Sheets("paso").Cells(i, "E") = Cells(i, "E")
        End If
        If IsDate(Cells(i, "I")) Then
            Workbooks(mio).Sheets("paso").Cells(i, "I") = " " & Cells(i, "I")
        Else
             Workbooks(mio).Sheets("paso").Cells(i, "I") = Cells(i, "I")
        End If
    Next
    Workbooks(mio).Sheets("paso").Columns("A:A").Copy
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Workbooks(mio).Sheets("paso").Columns("E:E").Copy
    Range("E1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Workbooks(mio).Sheets("paso").Columns("I:I").Copy
    Range("I1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    ActiveWorkbook.SaveAs Filename:=ruta & nombre & ".csv", _
        FileFormat:=xlCSV, CreateBackup:=False
    ActiveWorkbook.Close False
    archi = Dir()
Loop
End Sub

Saludos.DAM
Si es lo que necesitas.

Añade tu respuesta

Haz clic para o