Saltar al contenido

Macro que grabe archivo de la forma nombre_fecha_hora y ..


Recommended Posts

publicado

Buenas noches

 

 

Bueno la idea es una macro que me grabe el archivo como  Archivo_dia_hora

cuando lo vuelva a abrir , machaque el archivo anterior y escriba  Archivo_nuevo dia_nueva hora

cosa que cuando lo vea sabre que es el ultimo y que ademas cree una copia de respaldo de la forma  Respaldo_Archivo_nuevo dia_nueva hora

no subi archivo pues cualquier archivo excel cumple la funcion creo.

 

gracias

 

 

 

publicado

Hola, Quizá no comprendo,...pero cuando se guardan los archivos hay en Detalla, o en propiedades del archivo la fecha de modificación cada vez que se cierra o se guarde el archivo allí ya existe la fecha para verificar lo que quieres.

publicado

Parece que no se entendio, gracias igual por responder

 

Supongamos que tengo un archivo llamado nota.xlsm

lo abro  , ingreso datos en el archivo y al grabar,

me lo graba la macro  

Nota_8-06-2016-1.27.54.xlsm

y ademas crea un respaldo

BKNota_8-06-2016-1.27.54.xlsm 

hoy lo vuelvo a abrir,

abro

Nota_8-06-2016-1.27.54.xlsm

ingreso datos y cuando termine lo graba la macro

Nota_10-06-2016-14.27.54.xlsm 

y me crea el respaldo 

BKNota_10-06-2016-14.27.54.xlsm 

 

y asi sucesivamente

 

cuando la macro graba sobre escribe la version anterior y la copia anterior

de esta forma deberian quedar siempre dos archivos

Nota_dia-hora .xlsm  y 

BKNota_dia-hora .xlsm

 

esto lo pregunte aqu mismo hace como 2 años lo busque varias veces pero

no me aparece al archivo solucion que me mandaron ede dia

el cual funcionaba perfectamente y perdi en un formateo

 

gracias

 

 

 

 

 

 

 

 

 

 

 

publicado

Sera que por aqui va bien??

Sub SaveAS() 
Dim MiArchivo As String 
MiArchivo = Range("A1") 
Application.DisplayAlerts = False 
ActiveWorkbook.SaveAS Filename:= _ 
"C:\TuRuta\" & MiArchivo, _ 
FileFormat:=xlWorkbookNormal, CreateBackup:=False 'Aqui se modifica el tipo de extension que deseas 
Application.DisplayAlerts = True 
End Sub

En A1 poner =HOY() y pon en formato de celda fecha y hora

publicado
En 10-06-2016 at 18:54 , Visor dijo:

Sera que por aqui va bien??


Sub SaveAS() 
Dim MiArchivo As String 
MiArchivo = Range("A1") 
Application.DisplayAlerts = False 
ActiveWorkbook.SaveAS Filename:= _ 
"C:\TuRuta\" & MiArchivo, _ 
FileFormat:=xlWorkbookNormal, CreateBackup:=False 'Aqui se modifica el tipo de extension que deseas 
Application.DisplayAlerts = True 
End Sub

En A1 poner =HOY() y pon en formato de celda fecha y hora

Algo  debo hacer mal...no me resulta como lo recuerdo

ademas , no tenia que ver con el rango de una celda , era de otra forma..

te mando el archivo gracias por tu tiempo

 

Nota.xlsm

publicado

Que tal si pruebas primero con un Msgbox lo que te sale allí debería ser el nombre del archivo que ya no depende del Rango A1 solo de código Vba

Sub SaveAS()
Dim FechaActual As Date
Dim Hora As Date
Dim MiArchivo As String
FechaActual = Date
Hora = Now
MiArchivo = Now ' Date '& Now
MsgBox MiArchivo

'Application.DisplayAlerts = False
'ActiveWorkbook.SaveAS Filename:= _
'"C:\TuRuta\" & MiArchivo, _
'FileFormat:=xlWorkbookNormal, CreateBackup:=False 'Aqui se modifica el tipo de extension que deseas
'Application.DisplayAlerts = True
End Sub

Si allí te parece bien, eliminas el msgbox y activas el resto de lineas eliminando las comillas

publicado

quiza tengas problemas porque el nombre del archivo lleva slashs / en la fecha con el codigo anterior, por lo que esto no se acepta en los nombres

con este codigo se logra lo que deseas pero 

Sub guardando()
nbre = Format(Now, "dd-mm-yy hh.mm.ss")
ruta = ActiveWorkbook.Path
n_arch = ActiveWorkbook.Name
n_hoja = ActiveSheet.Name
ActiveWorkbook.SaveAs Filename:=ruta & "\" & n_hoja & nbre & ".xls"', FileFormat:=xlCSV
ActiveSheet.SaveAs ruta & "\" & n_arch & nbre & ".xlsm"
End Sub

los archivos que se crean en el mismo lugar donde esta tu archivo, luego no se pueden abrir los archivos eso no se aun las razones

publicado
Hace 15 horas, Mauricio_ODN dijo:

Hola: ¡¡¡¡¡ zero-x !!!!!

Te Adjunto un ejemplo de como podria quedar!!

Saludos!!!

lunes, 13 de junio de 2016 15_57_40.xlsm

Hola Mauricio , me sale error al descargarlo , lo puedes subir otra vez por favor.

 

Lo siento, hay un problema

No podemos encontrar el elemento que estás intentando ver.

Código de error: 2S328/1

 

 

publicado

Hola de nuevo ¡¡¡¡¡ zero-x !!!!!

Subo el Archivo de nuevo

Este seria el codigo

Sub OldNewName()

'Definimos las Variables para elNombre del Archivo Nuevo

'Dim NewName As String
Dim Fecha As Date
Dim Texto1 As String
Dim Texto2 As String

Fecha = Range("A1").Value

Texto1 = Format(Now(), "hh_mm_ss")
Texto2 = Format(Now(), "Long Date")

'MsgBox Texto2 & "  " & Texto1

'Definimos el Nombre del Archivo Anterior

Dim OldName As String
OldName = ThisWorkbook.Name

'MsgBox OldName

On Error Resume Next

'Creamos el Archivo co el Nombre Nuevo

ActiveWorkbook.SaveAs Filename:=Texto2 & "  " & Texto1, _
        FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
Application.DisplayAlerts = False

'Eliminamos el Archivo con el Nombre Anterior

Kill (OldName)
Application.DisplayAlerts = False

'Información opcional
MsgBox "Archivo Eliminado " & Chr(10) & OldName, vbInformation, "Control de Archivo"
MsgBox "Archivo Nuevo " & Chr(10) & ThisWorkbook.Name, vbExclamation, "Control de Archivo"

End Sub
 

lunes, 13 de junio de 2016 16_19_38.xlsm

publicado

hola , tengo un problema , baje tu archivo lo ppuse en una carpeta , lo ejecuto , ejecuto la macro y hace todo lo que se supone que hace , salen los dos mensajes , que borro el anterior y que creo el siguiente , pero luego veo en la carpeta y sigue el archivo oriiginal (osea como que lo realizo pero no realizo nada) , busque en el hd por si lo grabo en otro lado , y no hay nada , vi la rutina y no encuentro error...

 

puedes revisar

 

gracias

 

publicado

Hola mi Estimado zero-x

¡¡¡¡Que Pena Contigo por no preveer eso!!! Disculpame por favor

Mira Abre un Libro de Excel

desde ahí abre el archivo donde lo guardste en su Ubicación

esto con el Fin de que queda Guardado el directorio

Así debe de Funcionar

Saludos!!!

publicado

Mira

Abre un Libro nuevo de Excel

Desde ese Libro vas Menu Archivo Abrir

De ahí Vas Abrir el Archivo que estamos Trabajando donde lo guardaste

Al Abrir Lo ejecutas y Listo!!!

publicado

El archivo con el simple hecho de cerrarlo ejecuta las macros, ya que están en el Before Close del Workbook.

Trata con este nuevo ejemplo y me comentas. Si te sale error tomale un pantallazo y lo muestras, ya que no es posible definir el error solo con que digas "me sale error en tiempo de ejecución", ya que no especificas nada.

Prueba.zip

publicado

hola

me funciona muy bien , es justo lo que andaba buscando, ahora , en necesario que este ese rango en a1 y b2 , ¿se puede poner en otro lado ya que se usan las primeras 10 hojas de cada libro? , gracias por tu tiempo

publicado

hola  aaquino

tengo problemas con tu macro  , al ponerla en otro archivo  no hay caso que me resulte tu macro, la copio totalmente al nuevo archivo , ese si en ves de prueba le pongo el nombre de notas , cambio las referencias en las celdas pero no funciona , tu hoja esta en ingles , no se si es eso , o la carpeta , nada tiene que ver con activar las macros , estan activadas.

 

podrias revisar  por favor

 

publicado
Hace 10 horas, zero-x dijo:

hola  aaquino

tengo problemas con tu macro  , al ponerla en otro archivo  no hay caso que me resulte tu macro, la copio totalmente al nuevo archivo , ese si en ves de prueba le pongo el nombre de notas , cambio las referencias en las celdas pero no funciona , tu hoja esta en ingles , no se si es eso , o la carpeta , nada tiene que ver con activar las macros , estan activadas.

 

podrias revisar  por favor

 

Por lo que te entiendo, copiaste completamente las 3 macros que hice en el archivo que te adjunte. No se si te diste cuenta que hay una secuencia de macros en el evento "Before Close" del Workbook, no se si también copiaste eso.

Adicional te comento, yo tengo mi excel en inglés, por lo que puse esta línea en cada una de las macros

NombreActual = Sheet1.Range("A2")[/CODE]


Lo que puedes hacer es cambiarla en las 3 macros por lo siguiente:

[CODE]NombreActual = HojaX.Range("A2")[/CODE]

en HojaX debes sustituir la "X" por la hoja donde estén ubicados los datos de guardado en tu nuevo proyecto.

Sino, puedes subir el archivo que necesitas sea modificado, y con mucho gusto te lo modifico para que funcione.

Que quede claro que lo puedes subir con una simple muestra de los datos que ya tienes en el archivo, y yo te configuro las macros para que solo copies y pegues el contenido total de tu archivo.

Saludos.

publicado

Ves que te dije que no habías revisado TODO el proyecto.

Te faltaba añadir el proceso que estaba en el Workbook

En 21/6/2016 at 17:03 , aaquino dijo:

No se si te diste cuenta que hay una secuencia de macros en el evento "Before Close" del Workbook, no se si también copiaste eso.

 

Macros.zip

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      187
    • Comentarios
      97
    • Revisiones
      28

    Más información sobre "Un juego del Rabino en Excel"
    Última descarga
    Por pegones1

    1    1

  • Crear macros Excel

  • Mensajes

    • Vale mil gracias, en vdd se agradece todo el apoyo y comentarios
    • Hola nuevamente. Por eso la importancia de lo que mencionas tú como "ruta relativa". Tal cual comentas, y aún sin llegar a algunos detalles importantes para ayudarte, en realidad tal cual te comenté le día miércoles, pues sí podías hacer como comentabas, era cosa de obtener los Id de Windows (como tú los llamas) y la ruta de OneDrive en casa usuario y eso sí se puede obtener con VBA y luego pasarlo a PQ, pero medio que te cerraste en que "PQ no puede trabajar con rutas relativas", cosa cierta pero siempre hay formas. Si SAP puede o no guardar en OneDrive o SharePoint, pues si está mapeado en la PC ¡claro que se puede! Pero bueno, creo que si te es útil tu propia propuesta ¡avanza con eso!
    • Perdona @Abraham Valencia pero he estado liado estos días. En realidad todo el problema se reduce a estos dos problemas: Problema 1: El script que "fabrica" SAP y que luego "pego" en la macro, no es capaz de  guardar archivos en SharePoint. He estado buscando, y en realidad muchas personas tienen ese problema (no poder guardar un Excel en SAP a través de VBA). Eso muy probablemente sean problemas de permisos, que no puedo cambiar (no soy administrador de nada). Como no puedo solucionarlo así, paso al plan B, que es guardar en Excel que me genera SAP en el ordenador de cada usuario que ejecute la plantilla (y que sí está guardada en SharePoint), para después con PowerQuery llamar a ese Excel (el export). Para ello, pretendo guardar el export, en la ruta relativa "C:\..\..\..\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" donde los \..\..\..\ saltan las rutas personales de cada usuario (tipo C:\users\IDusuario\). Eso lo hace bien, y el archivo se guarda en la ruta de cada usuario que lo usa, pero surge el problema 2 Problema 2: PowerQuery no trabaja con rutas relativas del tipo  "C:\..\..\..\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" necesita que sea del tipo fija "C:\users\IDusuario\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" pero claro, IDusuario es diferente para cada usuario.   Pero escribiendo todo esto, creo que he dado con una posible solución, no grabar el export en una ruta de usuario, sino en una en la raiz de C:, que siempre será igual para todos los usuarios, del tipo C:\Sap\export.xlsx que seria igual en todos los ordenadores. Asi sí podría decirle a PowerQuery que vaya siempre a la ruta C:\Sap\ que existirá en todos los ordenadores. Mañana intentaré hacer pruebas, aunque mi solución ideal seria que se pudiera guardar en el SharePoint. Saludos.
    • Hola La opción brindada por @torquemada es correcta, funciona, pero hay algunos inconvenientes que (desde mi punto de vista) no la convierten en mi primera elección. Los inconvenientes son: Tendrías que ir columna por columna haciendo los reemplazos, claro que no se harían a mano sino que utilizarías la opción reemplazar o la opción texto en columnas, aun asi demorará un poquito y será trabajoso. Cada vez que descargues otro listado, tendrás que volver a realizar los reemplazos. Me parece una mejor propuesta lo siguiente: Descarga los movimientos a un archivo de Excel Desde tu control de pagos (otro archivo) cargas los movimientos del archivo descargado mediante Power Query Power Query hará los reemplazos y reconocerá todo correctamente (sin que tengas que hacer nada especial) Cuando descargues los movimientos un día posterior, solamente tendrás que hacer clic en "Actualizar" y todo funcionará en automático
    • Hola a todos, Efectivamente, me temo que tal como trabajan las funciones =HOY() y/o =AHORA() (volátiles), sólo con macros puedes obtener soluciones. Un recurso pedestre podría ser, cada vez que quieras que se fije un dato, te sitúes en esa celda y pulses F2, F9 e INTRO.  Pero claro, puede ser un inconveniente si hay que hacerlo repetitivamente en muchas ocasiones,.............. en fin, lo comento sólo como posibilidad. Saludos,
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.