Guardar hoja

Hola Buenos días por favor necesito una macro para guardar la hoja "report", con el nombre de la celda "C3", deberá guardarse en la unidad "C", en la carpeta llamada "reportes pn", y cada vez que la guarde lo hará como una hoja diferente para no borrar la anterior.
De antemano te agradezco mucho, saludos

1 respuesta

Respuesta
1
Vamos a ver entiendo cuando dices "Hoja" te refieres al Libro de Excel que en tu caso el nombre sería "Report.xls", quieres guardarlo en la ruta:
C:\Reportes pn\Nombre de la celda C3.xls pero para no borrar el anterior, por ejemplo podemos numerar correlativos, quedando así:
C:\Reportes pn\Nombre de la celda C3.xls
C:\Reportes pn\Nombre de la celda C3-1.xls
C:\Reportes pn\Nombre de la celda C3-2.xls
C:\Reportes pn\Nombre de la celda C3-3.xls
Podríamos añadirle la fecha del sistema algo así:
C:\Reportes pn\Nombre de la celda C3-1-08-07-2009.xls
Tenemos que mantener los correlativos porque si guardas el libro más de una vez en un día se borraría el anterior.
De todas formas te doy las dos macros esta es solo con correlativos:
Sub Auto_Close()
Dim contador As Integer
Application.DisplayAlerts = False
If Range("IV65536").Value = "" Then
Range("IV65536").Value = 1
End If
contador = Range("IV65536").Value
NombreArchivo = ActiveSheet.Range("C3").Value
    ChDir "C:\reportes pn"
    ActiveWorkbook.SaveAs Filename:= _
        "C:\reportes pn\" + NombreArchivo & "-" & contador & " .xls", FileFormat:=xlNormal _
        , Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False
Range("IV65536").Value = contador + 1
End Sub
En la ultima celda de la hoja he puesto el valor del contador "IV65536" (espero que no la utilices, si es así cambiala a otra) al cerrar el libro automáticamente se guardará en la carpeta que has puesto con un numero ordinal consecutivo, necesitamos una celda con el numero que hace de Libro guardado, porque las variables al cerrar el Libro pierden el dato y en algún sitio hay que tenerlo, si quieres esa celda ponle el color de texto en blanco y así no te molesta ni se vé.
Ahora en la celda de encima "IV65535" voy a poner la fecha del sistema para la siguiente macro que pondrá el nombre ordinal concatenado con la fecha:
Sub Auto_Close()
Dim contador As Integer
Dim fecha As String
Application.DisplayAlerts = False
If Range("IV65536").Value = "" Then
Range("IV65536").Value = 1
End If
Range("IV65535").Select
ActiveCell.FormulaR1C1 = "=Now()"
ActiveCell.NumberFormat = "dd-mm-yyyy"
fecha = ActiveCell.Text
Range("A1").Select
contador = Range("IV65536").Value
NombreArchivo = ActiveSheet.Range("C3").Value
    ChDir "C:\reportes pn"
    ActiveWorkbook.SaveAs Filename:= _
        "C:\reportes pn\" + NombreArchivo & "-" & contador & "-" & fecha & " .xls", FileFormat:=xlNormal _
Range("IV65536").Value = contador + 1
End Sub
Elige la que más te guste, y si te ha servido puntúa y finaliza la consulta. Gracias.
>Un saludo
>Julio
Hola!, todo esta genial, pero te aclaro algo, es que el libro tiene muchas hojas y no quiero guardarlo todo, solamente la hoja "report".
Nuevamente GRACIAS!...
Vale pues no entendí tu consulta entonces no es posible guardar el libro porque se guardaría completo, para hacer esto hay que crear un Libro nuevo copiarle y pegarle la hoja que deseas darle el nombre guardar los datos y cerrarle, te dejo la nueva macro solo con los valores de números consecutivos si quieres hacerlo también con la fecha fíjate en las lineas que he añadido y tan solo modifica las necesarias para añadir la fecha:
Sub Auto_Close()
Dim contador As Integer
Application.DisplayAlerts = False
If Range("IV65536").Value = "" Then
Range("IV65536").Value = 1
End If
contador = Range("IV65536").Value
NombreArchivo = ActiveSheet.Range("C3").Value
Cells.Select
Selection.Copy
Workbooks.Add
Cells.Select
ActiveSheet.PasteSpecial
ActiveSheet.Name = "report"
Sheets("Hoja2").Select
    Application.CutCopyMode = False
    ActiveWindow.SelectedSheets.Delete
    Sheets("Hoja3").Select
    ActiveWindow.SelectedSheets.Delete
    Range("A1").Select
    ChDir "C:\"
    ActiveWorkbook.SaveAs Filename:= _
        "C:\" + NombreArchivo & "-" & contador & " .xls", FileFormat:=xlNormal _
Range("IV65536").Value = ""
If ThisWorkbook.Saved = False Then
   ThisWorkbook.Save
End If
ActiveWorkbook.Close
Range("IV65536").Value = contador + 1
Range("A1").Select
End Sub
>Un saludo
>Julio
PD: Si ya te sirve puntúa y finaliza la consulta, un comentario es bienvenido.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas