Agregar fecha y hora a un archivo al exportar

Ojala encuentre al maestro que me pueda ayudar... Necesito exportar una tabla a excel, pero que el nombre del archivo sea el nombre de un ca`mpo+fecha+hora del proceso. Esto es de vital importancia, por que el mismo archivo se exporta varia veces en el día, y necesito que quede con el distintivo de la fecha-hora.

1 respuesta

Respuesta
1
Te falta decir de dónde salen los datos. Dices que van a Excel, pero... ¿los tienes en Access?
Voy a suponer que lo que quieres es exportar el contenido de una tabla llamada "datos" a un fichero Excel (versión 4), y que el nombre del fichero de salida está en una tabla llamada "opciones" en el campo "nombreFichero" (el path del fichero de salida será el mismo que tenga la base de datos).
La función a definirte sería la siguiente:
Option Compare Database
Option Explicit
Function exportarTablaDatosEnExcel4()
    Dim rs As Recordset
    Dim miPath As String
    Dim nomFichSalida As String
    miPath = CurrentDb().Name
    Do While Right$(miPath, 1) <> "\"
        miPath = Left$(miPath, Len(miPath) - 1)
    Loop
    Set rs = CurrentDb().OpenRecordset("opciones")
    If rs.EOF Then
        MsgBox "Error: No hay nada en la tabla de opciones. Proceso cancelado"
        rs.Close
        Exit Function
    End If
    If IsNull(rs!nombreFichero) Then
        MsgBox "Error: El nombre del fichero en la tabla de opciones está vacío. Proceso cancelado"
        rs.Close
        Exit Function
    End If
    nomFichSalida = miPath & rs!nombreFichero
    rs.Close
    ' Añadimos la fecha y hora actual y la extensión "XLS"
    nomFichSalida = nomFichSalida & Format$(Now(), "yyyymmdd_hhnnss") & ".xls"
    ' Exportamos la tabla indicada en el fichero cuyo nombre hemos preparado
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel4, "datos", nomFichSalida, True
    MsgBox "Exportación terminada. Fichero creado: " & vbCrLf & nomFichSalida
End Function
Espero que pueda servirte. Si no, detállame un poco más el tema.
Gracias pore tu respuesta... te explico más detalladamente.
Estoy realizando un sistema en access para una empresa por, en un formulario creé un botón que exporta el resultado de una tabla, esa tabla contiene el campo "empresa" y "tipo de empresa", al exportar esta tabla a excel, necesito que lleve como nombre los dos campos que indico más la fecha y hora, ej:Movistar_celular_15032009_15_10_00.xls
No entiendo mucho de visual basic, por lo tanto en el ejemplo que me enviaste no supe en que parte poner el nombre de la tabla a exportar y la ruta donde quedara el archivo excel.
Espero por favor master que me puedas ayudar... y allá podido expresar bien lo que necesito.
Las siguientes líneas obtienen el path de la base de datos actual. Si quieres poner un path fijo, sustituye estas 4 líneas...
    miPath = CurrentDb().Name
    Do While Right$(miPath, 1) <> "\"
        miPath = Left$(miPath, Len(miPath) - 1)
    Loop
... por otra que ponga: miPath = "C:\Docum.........." (el que tu quieras)
Respecto al nombre del fichero excel habría que saber exactamente el nombre de la tabla donde están los datos. Supongamos que se llama "tablaDeDatos" (después cambias tu el nombre).
Si ese fuera el nombre, cambia donde pone "opciones" por el nombre de tu tabla (en este ejemplo "tablaDeDatos").
Luego dices que el nombre del fichero se construye con el contenido de 2 campos, por lo que, en lugar de...
    nomFichSalida = miPath & rs!nombreFichero
... tendrás que poner
    nomFichSalida = miPath & rs!empresa & "_" & rs![tipo de empesa]
Para que ponga la fecha/hora en el formato que tu quieres, tendrás que cambiar la línea...
    nomFichSalida = nomFichSalida & Format$(Now(), "yyyymmdd_hhnnss") & ".xls"
... por esta otra
    nomFichSalida = nomFichSalida & Format$(Now(), "_ddmmyyyy_hh_nn_ss") & ".xls"
Para acabar. En la línea que genera el Excel había supuesto que la tabla que ibas a exportar se llamaba 'datos', como en este ejemplo se supone que se llama 'tablaDeDatos', tendrías que cambiar la línea...
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel4, "datos", nomFichSalida, True
... por
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel4, "tablaDeDatos", nomFichSalida, True
Un último comentario: si el nombre del fichero tiene la fecha en formato DDMMAAAA es muy difícil localizar un fichero determinado cuando tienes muchos en la carpeta. Si el nombre del fichero pone la fecha en formato "AAAAMMDD", con ordenar los ficheros por nombre los tendrás siempre ordenados por fechas y será más sencillo localizar uno determinado.
No me has comentado nada sobre este tema.
Si no tienes más preguntas, por favor, cierra la consulta para que no me aparezca entre las pendientes.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas