Macro para guardar solo una hoja de excel como xlsm

Tengo esta macro, lo que hace me encanta pero como hago para que me guarde en xlsm porque como se puede ver guardar en xlsx y cuando lo cambio a xlsm, y como es para una sola hoja, me sale que no se puede, pero cuando guardo todo el libro si guarda con macros.

Ambas macros son para guardar, la segunda es para guardar en PDF, pero también quiero que guarde con macros a la vez.

Dejo las macros, agradecería que me respondan con rapidez.

Sub GuardarVersion()
'poner en ruta lo que aparece en propiedades de la ubicación que quieras
ruta = "C:\Users\user\Desktop\INVENTARIO\"
If InStr(ActiveWorkbook.Name, "_v") = 0 Then
nombre = ruta & Range("K3").Value & Range("B8").Value & "_v1.xlsx"
Else
n = CInt(Split(Right(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - InStr(ActiveWorkbook.Name, "_v") - 1), ".")(0))
n = n + 1
nombre = ruta & Range("K3").Value & Range("B8").Value & "_v" & n & ".xlsx"
End If
'Copiamos la hoja activa
ActiveSheet.Copy
ActiveWorkbook.SaveAs (nombre)
'PARA QUE SE GUARDE AUTOMATICAMENTE
NombreArchivo = ActiveWorkbook.Name
Workbooks(NombreArchivo).Close SaveChanges:=False
End Sub

Sub GuardarProforma()
'poner en ruta lo que aparece en propiedades de la ubicación que quieras
ruta = "C:\Users\user\Desktop\PDF\"
If InStr(ActiveWorkbook.Name, "_v") = 0 Then
nombre = ruta & Range("K3").Value & Range("B8").Value & "_v1.xlsx"
Else
n = CInt(Split(Right(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - InStr(ActiveWorkbook.Name, "_v") - 1), ".")(0))
n = n + 1
nombre = ruta & Range("K3").Value & Range("B8").Value & "_v" & n & ".xlsx"
End If
'Copiamos la hoja activa
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=nombre, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub

1 respuesta

Respuesta

·

·

¡Hola Jhesca!

Hace muchos días que ya no me dedico a Excel. No obstante la macro para gardar el libro activo con formato xlsm sería así:

Sub GuardarVersion()
'poner en ruta lo que aparece en propiedades de la ubicación que quieras
ruta = "C:\Users\user\Desktop\INVENTARIO\"
If InStr(ActiveWorkbook.Name, "_v") = 0 Then
nombre = ruta & Range("K3").Value & Range("B8").Value & "_v1.xlsm"
Else
n = CInt(Split(Right(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - InStr(ActiveWorkbook.Name, "_v") - 1), ".")(0))
n = n + 1
nombre = ruta & Range("K3").Value & Range("B8").Value & "_v" & n & ".xlsm"
End If
'Copiamos la hoja activa
ActiveSheet.Copy
ActiveWorkbook.SaveAs nombre, xlOpenXMLWorkbookMacroEnabled
'PARA QUE SE GUARDE AUTOMATICAMENTE
NombreArchivo = ActiveWorkbook.Name
Workbooks(NombreArchivo).Close SaveChanges:=False
End Sub

·

Como ves es casi igual cambiando xlsx por xlsm y en la orden SaveAs hay que poner el formato xlOpenXMLWorkbookMacroEnabled

·

Respecto a lo de la proforma no entiendo lo que quieres hacer. Tal vez quien te haya hecho la macro lo sepa.

Saludos.

:

:

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas