Formato fecha

La verdad aprovecho este espacio para agradecer su ayuda que me ha resultado útil. Mi problema es que tengo una hoja de excel la cual contiene fechas en formato dd/mm/aaaa y necesito exportarlo a texto con un procedimiento almacenado de vb, y en efecto lo hago, pero me cambia el formato a mm/dd/aaaa... Ejemplo: una fecha que me aparece como 01/11/2009 me la exporta como 11/1/2009 y esto me lo complica todo.
¿Cómo puedo solucionar esto? La sentencia o rutina que utilizo es la siguiente:
    libro1 = ActiveWorkbook.Name
    nbre = "PPGlosas"
    ruta = "C:\Valglo"
    Sheets("Glosas a 1 col").Select
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:=ruta & "\" & nbre & ".txt", _
        FileFormat:=xlText, CreateBackup:=False
Así como está me funciona, lo malo es el formato...

3 respuestas

Respuesta
1
En un principio para convertir y que te mantuviera el formato, con esta instrucción te debería funcionar.
CStr(Date$)
Esto te convierte la fecha del día a String, a mi por lo menos, me lo convierte sin problemas.
Dentro del paréntesis puedes pasarle la variable que quieras o una celda con el dato fecha.
Te pongo una reseña por si te sirve para otras veces:
Date y Date$ no son equivalentes:
La función Date$ devuelve la fecha del sistema en un string con el formato MM-DD-AAAA. Date devuelve un variant con el formato de fecha especificado en el Panel de Control (puede devolver, por ejemplo, DD-MM-AA). Si queremos realizar cálculos con fechas, debemos utilizar Date$. Para mostrar la fecha actual al usuario, basta con usar Date (sin el símbolo $).
Muy bien, pero por favor indícame como introduzco la función Date dentro de mi macro para que las columnas de fecha no me las cambie y me deje el formato de fecha de mi pc que es dd/mm/aaaa
Este es el código, ¿dónde iría CStr(Date)?
libro1 = ActiveWorkbook.Name
    nbre = "PPGlosas" ------ nombre que quiero dar al archivo txt
    ruta = "C:\Valglo" ------- carpeta de ubicación
    Sheets("Glosas a 1 col").Select ---- se ubica en la hoja que voy a pasar
    Application.DisplayAlerts = False ---- desactivo mensaje de confirmación
    ActiveWorkbook.SaveAs Filename:=ruta & "\" & nbre & ".txt", _
        FileFormat:=xlText, CreateBackup:=False
una cosa mas... si lo hago manualmente (guardar como - archivo de texto separado por tabulaciones - etc) no me voltea las fechas, solo que necesito q sea automático para una aplicación.
Gracias
Buena tu código debería quedar así, se me había pasado, que cuando convertimos fechas a string, gurda la fecha separada por barra, y windows lo reconoce como un carácter no válido para archivo. Así que te envío el código para que convierta las "/" de la fecha en "-" y así poder guardarlo. Te marco en negrita los cambios que he introducido.
Dim fecha As String
libro1 = ActiveWorkbook.Name
    nbre = "PPGlosas" '------ nombre que quiero dar al archivo txt
    ruta = "C:\Valglo" '------- carpeta de ubicación
    Sheets("hoja1").Select '---- se ubica en la hoja que voy a pasar
    Application.DisplayAlerts = False '---- desactivo mensaje de confirmación
    fecha = CStr(Date)
    resultado = Replace(fecha, "/", "-", , , vbTextCompare)
    fecha = resultado

    ActiveWorkbook.SaveAs Filename:=ruta & "\" & nbre & "-" & fecha & ".txt", _
    FileFormat:=xlText, CreateBackup:=False
Por cierto se me ha olvidado cambiar esta linea:
Sheets("hoja1"). Select '---- se ubica en la hoja que voy a pasar
por la que tenias:
Sheets("Glosas a 1 col"). Select ---- se ubica en la hoja que voy a pasar
perdona por el fallo.
¿Te funcionó al final lo que te envíe?
Si funcionó, cuando puedas cierra la pregunta.
Respuesta
1
Lo que te recomiendo que hagas es lo siguiente:
Create una fórmula en excel el cual seleccione los dos primeros dígitos por la izquierda (entiendo que en excel seria el mes) y los intercambie por la posición 4 y 5 (hay que contar el espacio del separador / ) que corresponderían al día.
Gracias por tu respuesta, tal vez no me expliqué bien.---Pero lo que yo busco es el código dentro de la macro que te doy que si bien me funciona me exporta una fecha en excel dd/mm/aaaa a texto pero como mm/dd/aaaa
Este es el código,
libro1 = ActiveWorkbook.Name
    nbre = "PPGlosas" ------ nombre que quiero dar al archivo txt
    ruta = "C:\Valglo" ------- carpeta de ubicación
    Sheets("Glosas a 1 col").Select ---- se ubica en la hoja que voy a pasar
    Application.DisplayAlerts = False ---- desactivo mensaje de confirmación
    ActiveWorkbook.SaveAs Filename:=ruta & "\" & nbre & ".txt", _
        FileFormat:=xlText, CreateBackup:=False
una cosa mas... si lo hago manualmente (guardar como - archivo de texto separado por tabulaciones - etc) no me voltea las fechas, solo que necesito q sea automático para una aplicación.
Gracias
Lo único que se me ocurre es que revises como tienes el lenguaje tanto del sistema operativo como de office. Quizás lo tengas en ingles en vez de castellano o al revés.
Ya me contaras...
Respuesta
1
Que hay
Se me ocurre lo siguiente:
¿Qué a la fecha obtenida, le cambies el formato (Format(...)) de forma que se exporte como mm/dd/aaaa para que al exportar, lo haga de forma invertida?
Me explico
Si a 01/11/2009 te lo cambia por 11/1/2009, intentar engañar al programa cambiando
11/1/2009 para que cuando lo exporte, haga 01/11/2009
Otra cosa que se me ocurre es obtener 01, 11, y 2009 por separado, usando las funciones Mid, Left, Rigth, etc, y al final unirlos en una variable tipo String, es decir:
a="01"
b="11"
c="2009"
varFinal=a & "/" & b "/" & c
¿Cómo ves?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas