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 de santiagomf
1
1
santiagomf, Más de 35 años en la informática y más de 20 trabajando con...
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.