Como puedo guardar copia de libro excel sin datos de macro ni formulas?

Necesito crear una macro que al ejecutar debe eliminar todas las formulas del libro dejando los valores como texto e imprima la hoja activa, que ademas me guarde el libro activo con el nombre de una celda(la idea es que se guarde en la misma carpeta que esta el archivo original, actualmente mi macro la envia siempre a "Documentos") este nuevo libro debe quedar sin macros.

Sub Copia_hoja()
'elimina formulas
Cells.Copy
Range("A1").PasteSpecial Paste:=xlPasteValues
'imprimir hoja activa
ActiveSheet.PrintOut Copies:=1, Collate:=True
'Cambia nombre libro por celda A2
ActiveWorkbook.SaveAs Filename:=Range("B1").Value
End Sub

1 Respuesta

Respuesta
1

Asumo que, entonces, lo que te falta es borrar las macros y/o sus módulos.

Sugiero usar algo así como esta macro de C. Pearson:

 Sub DeleteAllVBACode()
        Dim VBProj As VBIDE.VBProject
        Dim VBComp As VBIDE.VBComponent
        Dim CodeMod As VBIDE.CodeModule
        Set VBProj = ActiveWorkbook.VBProject
        For Each VBComp In VBProj.VBComponents
            If VBComp.Type = vbext_ct_Document Then
                Set CodeMod = VBComp.CodeModule
                With CodeMod
                    .DeleteLines 1, .CountOfLines
                End With
            Else
                VBProj.VBComponents.Remove VBComp
            End If
        Next VBComp
    End Sub

Ojo que hay que cambiar algunas configuraciones del Excel ("Confiar en el acceso a proyectos de VBA...") y hacer algunas referencias en VBA ("Microsoft Visual Basic for Applications Extensibility xx.xx ...")

ok, gracias. voy a probar como me va. aun me falta resolver que al cambiar el nombre del libro me guarda una copia en un destino diferente, siempre se guarda en mis documentos y no en la carpeta en que se encuentra el libro.

Sugiero analizar tu propio código para entenderlo y a eso sumarle una leidita a algún manual de VBA.

Para guardarlo en la misma carpeta usa algo así:

sFilename = Range("B1").Value
ActiveWorkbook. SaveAs ThisWorkbook.Path & "\" & sFilename

Obvio eliminado la línea que usas tu para guardar

Nos vemos

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas