Grabar por codigo en Excel

28/11/2005 - 17:21 por Edison Torres | Informe spam
Hola quisiera que me ayuden tengo un libro llamado formulario y dentro de
este varias hojas (hoja1, hoja2, hoja3, reportes, hoja4) pero por codigo en
VBA Excel deseo preguntar al usuario si desea grabar (opcion save AS) si la
respuesta es SI que solo grabe la hoja de Reportes, si es NO que le envie un
mensaje y salga de la Aplicacion Completamente.
Como lo hago ya que esa opcion la deseo poner en un CommandButton
Gracias.
 

Leer las respuestas

#1 KL
28/11/2005 - 21:55 | Informe spam
Hola Edison,

Prueba el codigo que te pongo a continuacion colocandolo en un modulo
estandar.

Saludos,
KL

Sub Test()
' Declaramos las variables
Dim ws As Worksheet, wb As Workbook
Dim Archivo, Respuesta As VbMsgBoxResult

' Comprobamos que la hoja Reportes
' existe en el libro activo.
On Error Resume Next
Set ws = ActiveWorkbook.Worksheets("Reportes")
On Error GoTo 0
If Not ws Is Nothing Then
' Si la hoja Reportes existe
' Mostramos tres opciones: Guardar
' Descartar o Cancelar la operacion.
Respuesta = MsgBox( _
"?Desea guardar los cambios?", _
vbYesNoCancel + vbExclamation, _
"Cerrar el libro")
Select Case Respuesta
' Si la respuesta es Guardar...
Case vbYes
' Mostramos el dialogo de Guardar como...
Archivo = Application.GetSaveAsFilename( _
fileFilter:="Archivos Microsoft Excel (*.xls), *.xls")
' Si el usuario ha proporcionado la ruta
' y ha pulsado el boton guardar...
If Archivo <> False Then
' Copiamos la hoja Reportes a un libro nuevo...
ws.Copy
' Guardamos el nuevo libro usando la ruta y
' nombre de archivo proporcionados por el usuario.
ActiveWorkbook.SaveAs Archivo
Else
' Si la respuesta es Cancelar, mostramos un
' mensaje de aviso y abortamos el macro.
MsgBox "Se ha cancelado la operacion."
Exit Sub
End If
Case vbNo
' Si la respuesta es Descartar, mostramos
' un mensaje de aviso. Mas abajo procederemos
' a cerrar todos los libros sin guardar cambios
' y a cerrar Excel.
MsgBox "No se han guardado los cambios."
Case vbCancel
' Si la respuesta es Cancelar, mostramos un
' mensaje de aviso y abortamos el macro.
MsgBox "Se ha cancelado la operacion."
Exit Sub
End Select
' Ojo - tal como planteas la tarea, habra
' que forzosamente cerrar todos los archivos
' abiertos guardando o descartando los cambios.
' Personalmente me parece una caracteristica
' bastante irritante en cualquier aplicacion.
For Each wb In Workbooks
' Marcar todos los libros como guardados
' para evitar el aviso de guardar cambios.
wb.Saved = True
' Si quieres guardar los cambios forzosamente
' sustituye la instruccion "wb.Saved = True"
' por "wb.Save"
Next wb
With Application
' Congelar la pantalla
.ScreenUpdating = False
' Cerrar Excel
.Quit
End With
' Si no existe la hoja Reportes, mostramos
' un mensaje de aviso y salimos del macro.
Else
MsgBox _
"No existe la hoja ""Reportes"" en el libro activo"
End If
End Sub

Preguntas similares