............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

Grabar COPIA DE ARCHIVO nombrándolo con la FECHA Y HORA

Ver el tema anterior Ver el tema siguiente Ir abajo

Grabar COPIA DE ARCHIVO nombrándolo con la FECHA Y HORA

Mensaje por GalileoGali el Dom Abr 20, 2008 5:13 pm

Código:
Sub GuardarDatando()
Dim fd As FileDialog
Dim ruta As String
Dim fechaHora as String


fechaHora = Format(Now, "dd-mm-yyyy hh:mm")
fechaHora = Replace(fechaHora, ":", " ")
Set fd = Application.FileDialog(msoFileDialogFolderPicker)

With fd
 
    .AllowMultiSelect = False
        If .Show = -1 Then
ruta = .SelectedItems(1)
    Set fd = Nothing

Else
Exit Sub
End If
End With
ThisWorkbook.SaveAs Filename:= _
        ruta & "\" & fechaHora & ".xls", _
        FileFormat:=xlExcel8, CreateBackup:=False
ActiveWorkbook.Close
End Sub

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional

GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Grabar COPIA DE ARCHIVO nombrándolo con la FECHA Y HORA

Mensaje por moises melgar el Miér Sep 15, 2010 3:39 pm

orale como el respaldo de un libro, hace tiempo generarte un libro que se llama aleatorio intermitente podriamos usar las dos ideas para crear un guardado de respaldo automatico cada determinado tiempo.

vere que puedo lograr

gracias por el codigo

moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 512
Edad : 28
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: Grabar COPIA DE ARCHIVO nombrándolo con la FECHA Y HORA

Mensaje por Tatayayan el Vie Sep 17, 2010 10:59 am

Hola, la macro esta estupenda, pero puede tener inconvenientes si la guardamos en la raiz, es decir si yo quiero guardarlo en c:\, concatena \ y esto sería c:\\.

Lo "atajariamos" con un On error

Tatayayan
Moderador
Moderador

Masculino Cantidad de envíos : 319
Ciudad - Pais : Chamical- La Rioja - ARG
Fecha de inscripción : 20/11/2008

Volver arriba Ir abajo

Re: Grabar COPIA DE ARCHIVO nombrándolo con la FECHA Y HORA

Mensaje por Tatayayan el Vie Sep 17, 2010 11:01 am

Ah y otra el libro guarda la macro, como se haría si se requiere no guardar módulos, formularios, etc? yo rusticamente copio las hojas a un libro nuevo.

Tatayayan
Moderador
Moderador

Masculino Cantidad de envíos : 319
Ciudad - Pais : Chamical- La Rioja - ARG
Fecha de inscripción : 20/11/2008

Volver arriba Ir abajo

Re: Grabar COPIA DE ARCHIVO nombrándolo con la FECHA Y HORA

Mensaje por Antoni el Sáb Sep 18, 2010 3:34 pm

Hola:

Esta macro hace mas o menos las dos cosas.
Abre un libro vacio, coloca la macro en un módulo y ejecútala, te pedirá un libro.
Al aceptar, te guardara una copia anteponiendo al nombre "Sin macros_"+Fecha+Hora, y eliminará cualquier código, formulario y módulo que pudieran existir.

Necesitas añadir la referencia Microsoft Visual Basic Extensibility

Código:
Sub EliminarMacrosLibro()
'
' Esta macro elimina todo el código VBA de la copia del libro seleccionado
' ------------------------------------------------------------------------
'
Application.ScreenUpdating = False
ChDir ThisWorkbook.Path
Archivo = Application.GetOpenFilename _
  ("Excel (*.xlsm; *.xls ), *.xlsm;*.xls", , _
  "Seleccione el archivo al que desea eliminar el código VBA.")
'--
Application.EnableEvents = False
Workbooks.Open Archivo
LibroConMacros = Mid(Archivo, InStrRev(Archivo, "") + 1)
LibroSinMacros = ActiveWorkbook.Path & "\Sin código_" & Format(Date, "yyyymmdd") & _
                Format(Time, "hhmmss") & "_" & LibroConMacros
ActiveWorkbook.SaveCopyAs LibroSinMacros
Workbooks(LibroConMacros).Close
Workbooks.Open LibroSinMacros
Application.EnableEvents = True
'--
Set VBProj = ActiveWorkbook.VBProject
For Each VBComp In VBProj.VBComponents
    If VBComp.Type = vbext_ct_Document Then
      VBComp.CodeModule.DeleteLines 1, VBComp.CodeModule.CountOfLines
    Else
      VBProj.VBComponents.Remove VBComp
    End If
Next VBComp
'--
ActiveWorkbook.Save
ActiveWorkbook.Close
If LCase(Right(LibroConMacros, 4)) = "xlsm" Then
  Name LibroSinMacros As Left(LibroSinMacros, Len(LibroSinMacros) - 1) & "x"
End If
End Sub

Un saludo. Antoni.

Antoni
Moderador
Moderador

Masculino Cantidad de envíos : 21
Edad : 65
Ciudad - Pais : Santiago de Compostela - Galicia
Version de Excel : XP-2007
Fecha de inscripción : 28/12/2009

Volver arriba Ir abajo

Re: Grabar COPIA DE ARCHIVO nombrándolo con la FECHA Y HORA

Mensaje por GalileoGali el Sáb Sep 18, 2010 5:44 pm

Excelentes aportes y muy útiles por cierto, cuando se manda archivos adjuntos. En este caso conviene tambien engancharle un "Limpiador de Vínculos Externos"

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional

GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Grabar COPIA DE ARCHIVO nombrándolo con la FECHA Y HORA

Mensaje por Tatayayan el Dom Sep 19, 2010 11:36 am

Por que veo la macro de Antoni (no la corri) pide abrir el libro y lo guarda sin macros, pero que pasa si el que quiero guardar es el mismo libro (el pide abrir libros), o sea sirva para otros libros con macros, no para si mismo?

Tatayayan
Moderador
Moderador

Masculino Cantidad de envíos : 319
Ciudad - Pais : Chamical- La Rioja - ARG
Fecha de inscripción : 20/11/2008

Volver arriba Ir abajo

Re: Grabar COPIA DE ARCHIVO nombrándolo con la FECHA Y HORA

Mensaje por Tatayayan el Dom Sep 19, 2010 11:46 am

Corri la macro y me da error en : Workbooks(LibroConMacros).Close
LibroConMacros es igual a ""

Tatayayan
Moderador
Moderador

Masculino Cantidad de envíos : 319
Ciudad - Pais : Chamical- La Rioja - ARG
Fecha de inscripción : 20/11/2008

Volver arriba Ir abajo

Re: Grabar COPIA DE ARCHIVO nombrándolo con la FECHA Y HORA

Mensaje por Tatayayan el Dom Sep 19, 2010 12:11 pm

Me daba errores, hice retoques y se produce un error que dice El acceso mediante programación al proyecto de Visual Basic no es de confianza. Pongo la macro con los retoques:
Código:
Sub EliminarMacrosLibro()
' Esta macro elimina todo el código VBA de la copia del libro seleccionado
' ------------------------------------------------------------------------
Dim Archivo As String, LibroConMacros As String, LibroSinMacros As String
Application.ScreenUpdating = False
ChDir ThisWorkbook.Path
Archivo = Application.GetOpenFilename _
  ("Excel (*.xlsm; *.xls ), *.xlsm;*.xls", , _
  "Seleccione el archivo al que desea eliminar el código VBA.")
'--
Application.EnableEvents = False
Workbooks.Open Archivo
LibroConMacros = Mid(Archivo, InStrRev(Archivo, "") + 1)
LibroSinMacros = ActiveWorkbook.Path & "\Sin código_" & Format(Date, "yyyymmdd") & _
                Format(Time, "hhmmss") & "_" & Left(LibroConMacros, InStr(1, LibroConMacros, "."))
ActiveWorkbook.SaveCopyAs LibroSinMacros
Workbooks(LibroConMacros).Close
Workbooks.Open LibroSinMacros
Application.EnableEvents = True
'--
Set VBProj = ActiveWorkbook.VBProject
For Each VBComp In VBProj.VBComponents
    If VBComp.Type = vbext_ct_Document Then
      VBComp.CodeModule.DeleteLines 1, VBComp.CodeModule.CountOfLines
    Else
      VBProj.VBComponents.Remove VBComp
    End If
Next VBComp
'--
ActiveWorkbook.Save
ActiveWorkbook.Close
If LCase(Right(LibroConMacros, 4)) = "xlsm" Then
  Name LibroSinMacros As Left(LibroSinMacros, Len(LibroSinMacros) - 1) & "x"
End If
End Sub

Tatayayan
Moderador
Moderador

Masculino Cantidad de envíos : 319
Ciudad - Pais : Chamical- La Rioja - ARG
Fecha de inscripción : 20/11/2008

Volver arriba Ir abajo

Re: Grabar COPIA DE ARCHIVO nombrándolo con la FECHA Y HORA

Mensaje por Antoni el Lun Sep 20, 2010 5:23 am

Vamos a ver Tatayayan:

Dos cosas:

1) Aviso: "El acceso mediante programación al proyecto de Visual Basic no es de confianza". Debes dar confianza confianza a los proyectos de Visual Basic:

Opciones de Excel\Centros de confianza\Configuración de centros de confianza\Configuración de macros\
Habilita la casilla: "Confiar en el acceso al módelo de objetos de proyectos de VBA".


2) Eliminar las macros en el mismo libro.. En primer lugar VBA no lo permite, ¿ Como vas a eliminar el propio código que estas ejecutando ?, sería como comerse entero uno mismo empezando por los pies, y en segundo lugar, no tiene sentido, perderías las macros para siempre.

Un saludo. Antoni.

Antoni
Moderador
Moderador

Masculino Cantidad de envíos : 21
Edad : 65
Ciudad - Pais : Santiago de Compostela - Galicia
Version de Excel : XP-2007
Fecha de inscripción : 28/12/2009

Volver arriba Ir abajo

Mision Imposible....esta cinta se autodestruirá.....

Mensaje por GalileoGali el Lun Sep 20, 2010 7:45 am

Eliminar las macros en el mismo Libro???
mmmmm
1) Abrir un Libro Nuevo
2) Insertar un Módulo de VBA (Módulo1)

3)agregar a este módulo el siguiente código
Código:
Sub DeleteModulo()
Dim VBProj As VBIDE. VBProject
Dim VBComp As VBIDE. VBComponent
Set VBProj = ActiveWorkbook. VBProject
Set VBComp = VBProj. VBComponents("Módulo1")
VBProj.VBComponents.Remove VBComp
End Sub
Sub auto_close()
DeleteModulo
End Sub

4) Habilitar la referencia a VBIDE "Microsoft Visual Basic for Application Extensibility X.X"

5) Habilitar en "Seguridad de Macros"
Confiar en el acceso al modelo de objetos de Proyectos de VBA

6) Cerrar el Libro y guardar como "Test Autoieliminar Módulos"

7) abrir de nuevo el Libro

Buscar el Módulo1

¿No sería algo así como que el Modulo1 se encargo de autoeliminarse?

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional

GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Grabar COPIA DE ARCHIVO nombrándolo con la FECHA Y HORA

Mensaje por Tatayayan el Lun Sep 20, 2010 9:31 am

Ahora si

Tatayayan
Moderador
Moderador

Masculino Cantidad de envíos : 319
Ciudad - Pais : Chamical- La Rioja - ARG
Fecha de inscripción : 20/11/2008

Volver arriba Ir abajo

Re: Grabar COPIA DE ARCHIVO nombrándolo con la FECHA Y HORA

Mensaje por Antoni el Mar Sep 21, 2010 4:03 am

Hola:

En mi último post dije:
2) Eliminar las macros en el mismo libro.. En primer lugar VBA no lo permite, ¿ Como vas a eliminar el propio código que estas ejecutando ?, sería como comerse entero uno mismo empezando por los pies, y en segundo lugar, no tiene sentido, perderías las macros para siempre.
No tener en cuenta la parte que dice:
En primer lugar VBA no lo permite

Garcias Gali.

Un saludo. Antoni.


Antoni
Moderador
Moderador

Masculino Cantidad de envíos : 21
Edad : 65
Ciudad - Pais : Santiago de Compostela - Galicia
Version de Excel : XP-2007
Fecha de inscripción : 28/12/2009

Volver arriba Ir abajo

Re: Grabar COPIA DE ARCHIVO nombrándolo con la FECHA Y HORA

Mensaje por Contenido patrocinado Hoy a las 11:27 pm


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.