Modificación de macro para guardar hojas de un libro

Tengo esta macro, lo que hace es guardar solo la hoja que esta nombrada como "Resultados" y nombra al archivo de acuerdo al contenido de acuerdo a lo que esta en la celda E6, lo que necesito ahora es que en vez de que me guarde solo la hora de "Resultados", me guarde otras dos hojas, serian "A1" y la "A2", el problema viene que en estas dos hojas vienen formulas, lo que necesito es que me guarde solo valores.

Sub Guardar_Hoja()

hoja = "Resultados"
arch = Sheets(hoja).Range("E6").Value
Set objWSHShell = CreateObject("WScript.Shell")
escritorio = objWSHShell.SpecialFolders("Desktop") & "\Evaluaciones\"
If Dir(escritorio, vbDirectory) = "" Then
MsgBox "No existe la caperta"
Exit Sub
End If
Sheets(hoja).Copy
ActiveWorkbook.SaveAs escritorio & arch & ".xlsx"
ActiveWorkbook.Close False
MsgBox "Se guardaron los resultados en la carpeta EVALUACIONES, ubicada en el ESCRITORIO"
End Sub

1 Respuesta

Respuesta
1

Con el grabador de macros copia el contenido de la hoja y haz pegado especial / valores. Luego adaptas ese código para que se ejecute después de la copia y antes de guardar el libro.

Me comentas si tienes inconvenientes.

S@lu2

El problema es que si hago eso me deja las demás hojas que contiene el libro y que para efectos de ese paso no las necesito, por eso solo necesito que me guarde las 3 que comenté.

Saludos

El siguiente:

--------------

Sub Guardar_Hoja(hoja as string, celda as string)

arch = Sheets(hoja).Range(celda).Value
Set objWSHShell = CreateObject("WScript.Shell")
escritorio = objWSHShell.SpecialFolders("Desktop") & "\Evaluaciones\"
If Dir(escritorio, vbDirectory) = "" Then
MsgBox "No existe la caperta"
Exit Sub
End If
Sheets(hoja).Copy

    'Agregar este código'
    Cells.Copy
    Cells.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Range("A1").Select

ActiveWorkbook.SaveAs escritorio & arch & ".xlsx"
ActiveWorkbook.Close False
MsgBox "Se guardaron los resultados en la carpeta EVALUACIONES, ubicada en el ESCRITORIO"
End Sub

--------

Además le hice un par de cambios en el encabezado para que puedas llamar el procediiento por cada una de la hojas que deseas guardar.

Sub guarda_todas_las_hojas()
  Guardar_Hoja("Resultado", "E6")
  Guardar_Hoja("Nombre_hoja", "A1")
  Guardar_Hoja("Nombre_hoja", "A2")
End Sub

S@lu2

Hola,  me aparece el mensaje de "El argumento no es opcional" :(

El procedimiento no es necesario que me lo haga para cada una de esas hojas, con que se guarde como la celda E6 de la hoja "Resultados" es perfecto.

¿Dónde aparece el error?

Solo me aparece ese mensaje y solo aceptar y ayuda, no me da la opción de Depurar

¿Me puedes mostrar el código para ver cómo lo estás haciendo?

Si tienes la llamada a la función de esta forma

Guardar_Hoja("Resultado", "E6")

Quítale los paréntesis  y déjalo de esta forma

Guardar_Hoja "Resultado", "E6"

S@lu2

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas