Formato de fecha

Hola, ya me ayudaste una vez, con mi macro que carga desde un archivo plano (txt) a un excel.
Lo que me pasa ahora es que ese archivo plano contiene una fecha y al momento de que la macro lo abre toma las fecha que vienen con 02-01-2008 y las cambia a 01-02-2008, cambiando el mes por el día. No pasa lo mismo para las fechas que vienen con 17-01-2008, lo deja tal cual como si no fuera una fecha.
Espero que comprendas la problemática, te adjunto el excel con la macro y el archivo txt para que veas lo que sucede.
En estos link se encuentran
http://demandantes.cl/images/plantilla.xls
http://demandantes.cl/images/roe.txt
Clave para la macro: 1234

1 Respuesta

Respuesta
1
El formato de fecha es uno de los problemas que odio :-). Dan siempre muchos problemas, de hecho yo las uso siempre en formato juliano (numérico) para evitarme estos temas.
Lo que comentas es uno típico de lo que llaman 'conversión diabólica'. Posiblemente tengas el formato de Excel o del ordenador como mm/dd/yyyy y lo cambia. Como el 17 no lo puede cambiar por que le da un error lo deja en paz.
Se me ocurren tres posibilidades 'sencillas'.
- Juega con los formatos: Usa dd/mm y mm/dd. Haz un par de importaciones y a ver si te las coge bien.
- Rompe los arrays de la importación en 3 uno para cada valor ( día, mes y año) y luego monta con una fórmula la fecha en la excel.
- Impórtalo como 'Texto' y no debería tocarte nada.
Bueno jugué demasiado con los formatos no pudiendo obtener lo que quería ya que al momento de seleccionar alguna fecha esta se cambiaba al formato que venia.
Rompí los array, dando uno que otro problema al momento de separarlos y después pegarlos en el excel, no dando un resultado bueno.
Si que empecé a ver como podía dejarlo como texto, ocupando diferentes formas y descubrí una que es más sencillo de lo que parece. En el array primero se coloca el rango que se quiere obtener y el segundo numero es el tipo el cual 2 es tipo texto. Así me quedo un resultado satisfactorio.
Es así como queda: Array(280, 2).
Copio el código por si alguien lo necesita:
'
' Elaborado por:
' Claudio Navia Fuentes - AS Asociados
' Importar a Excel Archivo Plano (.txt)
' Atajos de Teclados: Ctrl + Mayús + X
'
Sub ImportarArchoPlano()
    Dim ArchEx As String
    Dim ArchIm As String
     Application.ScreenUpdating = False
    Arch = Application.GetOpenFilename("Archivos de texto (*.txt), *.txt")
            If Arch <> False Then Workbooks.OpenText Arch, Origin:=xlMSDOS, StartRow:=1, _
        DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(25, 1), Array(100, 1 _
        ), Array(125, 1), Array(126, 1), Array(136, 1), Array(139, 1), Array(140, 1), Array(165, 1) _
        , Array(240, 1), Array(265, 1), Array(266, 1), Array(276, 1), Array(279, 1), Array(280, 2), _
        Array(290, 1), Array(298, 1), Array(301, 1), Array(304, 1)), TrailingMinusNumbers:= _
        True
    Dim Wrbk
    Wrbk = Workbooks.Count
    ArchEx = Application.ThisWorkbook.Name
    Application.ScreenUpdating = True
    Range("A1:S20000").Select
    Selection.Copy
    Windows(ArchEx).Activate
    Range("A9").Select
    ActiveSheet.Paste
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 4
    ActiveWindow.ScrollColumn = 5
    ActiveWindow.ScrollColumn = 6
    ActiveWindow.ScrollColumn = 7
    ActiveWindow.ScrollColumn = 8
    ActiveWindow.ScrollColumn = 9
    ActiveWindow.ScrollColumn = 10
    ActiveWindow.ScrollColumn = 11
    ActiveWindow.ScrollColumn = 12
    ActiveWindow.ScrollColumn = 11
    ActiveWindow.ScrollColumn = 10
    ActiveWindow.ScrollColumn = 9
    ActiveWindow.ScrollColumn = 8
    ActiveWindow.ScrollColumn = 7
    ActiveWindow.ScrollColumn = 6
    ActiveWindow.ScrollColumn = 5
    ActiveWindow.ScrollColumn = 4
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 1
    Range("A9").Select
    Application.CutCopyMode = False
    Workbooks(Wrbk).Close ' esta cuando quieras cerrar el arrchivo de texto.
End Sub
Gracias una vez más, por orientarme para encontrar una solución.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas