Macro guardar hoja

Hola expertos, tengo una hoja llamada "FACTURA" y quiero guardarla con el nombre que hay en una celda mediante una macro.

Me explico, Celda donde esta el nombre: IJKLM3, son celdas combinadas.

Rangos de la hoja que quiero que se guarden: C3:M51.

La hoja tiene que guardarse con todas sus atributos (valores, formulas, etc.).

Carpeta donde quiero que se guarde: D:\Mis documentos\PADRE\MIS TRABAJOS\PRESUPUESTOS\factura materiales.

Importante si es posible: Como la hoja contiene formulas vinculadas a otras hojas quisiera que las filas donde no hay contenido, las formulas no me diesen error. Por si te sirve, la primera columna se llama (CÓDIGO) es decir que si no hay escrito nada las formulas de esas filas no den error.

Este es el código que he adaptado pero no me funciona como quiero y me da error.

Sub GUARDARHOJA()
Range("C3:M51").Select
Range("M51").Activate
Selection.Copy
Workbooks.Add
Columns("A:A").Select
ActiveSheet.Paste
Range("C3:M51").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
nombre = Range("I3")
Range("I3").Select
Application.CutCopyMode = False
With Selection.Validation
.Delete
.Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator _
:=xlBetween
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = "Seleccione día"
.ErrorMessage = ""
.ShowInput = False
.ShowError = False
End With
NombreArchivo = "D:\Mis documentos\PADRE\MIS TRABAJOS\PRESUPUESTOS\factura materiales\"
NArchivo = Format(Range("I3").Value, "")
ActiveWindow.Close
End Sub

Gracias por vuestra colaboración, saludos.

1 respuesta

Respuesta
1

Prueba esta macro y me cuentas como te fue

Sub Macro1()
'
' By Viktor
'
Sheets("FACTURA").Copy
ActiveWorkbook.SaveAs Filename:= _
"D:\Mis documentos\PADRE\MIS TRABAJOS\PRESUPUESTOS\factura materiales\" & Range("I3") & ".xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWorkbook.Close

End Sub

Me va bien pero con la salvedad de que no quiero que se guarden las filas A y B que es donde tengo los botones de macros. O sea que solo se guarde la hoja con el rango C3:M51.

Gracias por tu aporte

Las columnas A y B?, ¿Pero las podemos eliminar completamente?, o existe informacion aparte de los botones

Perdón por el fallo son las filas 1 y2 donde están los botones de macros

Prueba este código y me cuentas

Sub Macro1()

'
' By Viktor
'
Sheets("FACTURA").Copy
ActiveWorkbook.SaveAs Filename:= _
"D:\Mis documentos\PADRE\MIS TRABAJOS\PRESUPUESTOS\factura materiales\" & Range("I3") & ".xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

Rows("1:2").Delete
ActiveWorkbook.Close
End Sub

Me da error y al elegir depurar me marca en amarillo la nueva entrada: Rows("1:2").Delete

A mi no me da error, enviame una copia a [email protected]

Ya te he enviado el fichero de excel

Le agregue el código para que seleccione todos los botones, y los elimine

Sub Macro1()
'
' By Viktor [email protected]
'
Sheets("FACTURA").Copy
ActiveWorkbook.SaveAs Filename:= _
"D:\Mis documentos\PADRE\MIS TRABAJOS\PRESUPUESTOS\factura materiales\" & Range("I3") & ".xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Worksheets(1).Shapes.SelectAll
Selection.Delete
ActiveWorkbook.Close
End Sub

No se te olvide finalizar la pregunta, hasta la próxima!

Hay un error, los shapes se borran antes de guardar!

Sub Macro1()
'
' By Viktor [email protected]
'
Sheets("FACTURA").Copy

Worksheets(1).Shapes.SelectAll
Selection.Delete
ActiveWorkbook.SaveAs Filename:= _
"D:\Mis documentos\PADRE\MIS TRABAJOS\PRESUPUESTOS\factura materiales\" & Range("I3") & ".xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWorkbook.Close
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas