En resumen lo que quiero es:
Que copie la hoja (rango) (crie) en PDF (ya lo hace)
Que copie la hoja (rango) (crie) en xlsx (ya lo hace)
Que elimine TODA macro DE LA COPIA .xlsx (ya lo hace)
Que no transporte las formulas del origen a la copia (ya lo hace)
Que elimine todos los botones DE LA COPIA .xlsx solamente (ya lo hace).
Que proteja (TODO) su contenido, formas, datos, ETC en la copia .xlsx solamente, con passw o de alguna forma pero que la proteja de forma a que NADIE pueda modificar dato alguno en la copia. Ahora solo protege las formas que existen, quiero proteger TODO
Al abrir la copia, se ve TODO el rango seleccionado, QUE NO SEA ASÍ
En el libro origen, SI PROTEJO LA HOJA dejando solo LAS CELDAS A USAR desbloqueadas, me manda errores y quiero que protegida me deje ejecutar la macro, aunque tenga la J2, J3 y L3 desbloqueadas y desprotegidas, como se reflejan en la macro.
Esta la macro
Código:
Este el enlace al libro, porque creo que es mejor trabajar sobre el libro que estar construyendo uno para pruebaSub GuardaSinMacros() Dim ruta As String Dim nombre As String Dim wb As Object Dim i As Long Dim d As String ruta = "C:\0\1\" Application.ScreenUpdating = False Application.DisplayAlerts = False With ThisWorkbook.Sheets(1) nombre = .Range("G4") & "_" & .Range("C13") & " " & .Range("D13") & "-" & .Range("H13").Value .Copy End With Set wb = Workbooks(Workbooks.Count) With wb With .Sheets(1) For i = .Shapes.Count To 1 Step -1 d = .Shapes(i).TopLeftCell.Address(False, False) Select Case d Case "J2": .Shapes(i).Delete Case "J3": .Shapes(i).Delete Case "L3": .Shapes(i).Delete End Select Next With .Range("B2:J60") .ExportAsFixedFormat Type:=xlTypePDF, Filename:=ruta & nombre & ".pdf", _ Quality:=xlQualityStandard, IncludeDocProperties:=True, _ IgnorePrintAreas:=False, OpenAfterPublish:=False .Copy .PasteSpecial xlPasteValues Application.CutCopyMode = False End With With .Cells .Locked = True .FormulaHidden = False End With .Protect Password:=1234, DrawingObjects:=True, Contents:=True, Scenarios:=True .EnableSelection = xlNoRestrictions End With .SaveAs Filename:=ruta & nombre & ".xlsx", FileFormat:=xlOpenXMLWorkbook, _ CreateBackup:=False .Close True End With Set wb = Nothing Application.DisplayAlerts = True Application.ScreenUpdating = True With ThisWorkbook With .Sheets(1).Range("I3") .Value = .Value + 1 End With End With End Sub
http://turbobit.net/yn8tcdinb3lw.html