Como inhabilitar los botones de guardar y guardar como

Tengo una planilla donde coloque un botón de guardado que guarda en una ubicación especifica el archivo, pero necesito inhabilitar los botones de guardar y guardar como para que si o si guarden los usuarios desde ese botón,

¿Existe alguna macro?

1 Respuesta

Respuesta
2

Pon la siguiente macro en un módulo

La variable boton deberá quedar hasta el principio de todo el código

Asigna la macro "boton_guardar" a tu botón de guardado.

Public boton
'
Sub boton_guardar()
'Por.Dante Amor
    boton = True
    ActiveWorkbook.Save
    MsgBox "Archivo guardado", vbInformation, "GUARDAR"
End Sub

Pon el siguiente código en los eventos de thisworkbook

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Por.Dante Amor
    If SaveAsUI Or boton = False Then
        MsgBox "Solamente puedes guardar presionando el botón de Guardar ", vbExclamation
        Cancel = True
        Exit Sub
    End If
    boton = False
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Perdón pero me olvide de decirte que tengo esta macro y el bonton esta asociado a la macro sub gardar.

¿La macro también cancelaría el guardar como?

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _
Cancel As Boolean)
'If ActiveSheet.Range("H18") = "Ingrese Legajo primero" Then
'MsgBox ("Por favor ingrese o verifique el numero de legajo")
'Range("E18").Select
'Else
'Lunes
'If ActiveSheet.Range("J22") = "SI" Then
'If ActiveSheet.Range("E83") = "" Or ActiveSheet.Range("F83") = "" Then
'lunes = "lunes, "
'MsgBox ("Falta seleccionar menu del Lunes")
'End If
'End If
'Martes
'If ActiveSheet.Range("J34") = "SI" Then
'If ActiveSheet.Range("G83") = "" Or ActiveSheet.Range("H83") = "" Then
'martes = "martes, "
'MsgBox ("Falta seleccionar menu del Martes")
'End If
'End If
'Miercoles
'If ActiveSheet.Range("J46") = "SI" Then
'If ActiveSheet.Range("I83") = "" Or ActiveSheet.Range("J83") = "" Then
'miercoles = "miercoles, "
'MsgBox ("Falta seleccionar menu del Miercoles")
' End If
' End If
'Jueves
'If ActiveSheet.Range("J58") = "SI" Then
'If ActiveSheet.Range("K83") = "" Or ActiveSheet.Range("L83") = "" Then
'jueves = "jueves, "
'MsgBox ("Falta seleccionar menu del Jueves")
'End If
'End If
'Viernes
'If ActiveSheet.Range("J70") = "SI" Then
'If ActiveSheet.Range("M83") = "" Or ActiveSheet.Range("N83") = "" Then
'viernes = "viernes, "
'MsgBox ("Falta seleccionar menu del Viernes")
'End If
'End If
'If lunes = "lunes, " Or martes = "martes, " Or miercoles = "miercoles, " Or jueves = "jueves, " Or viernes = "viernes, " Then
'Alerta de los dias no completados
'MsgBox ("Falta seleccionar menu ó postre del día: " + lunes + martes + miercoles + jueves + viernes)
'If a = vbNo Then Cancel = True
'End If
'MsgBox ("La celda e6 NO es NUll")
'End If
End Sub

Sub GuardarCopia()
'Por.Dante Amor
If ActiveSheet.Range("H18") = "Ingrese Legajo primero" Then
MsgBox ("Por favor ingrese o verifique el numero de legajo")
Range("E18").Select
Exit Sub
End If
Dim verif As Boolean
verif = VerificarPedido()
If verif = False Then
Exit Sub
Else
ruta = ThisWorkbook.Path & "\"
Set h1 = Sheets("menu")
celda = "H18"
'
nombre = h1.Range(celda) & "_" & h1.Range("C18") & ".xlsm"
ThisWorkbook.SaveCopyAs ruta & nombre
MsgBox "Copia guardada en " & ruta + nombre, vbInformation, ""
Application.ActiveWorkbook.Save
Application.ActiveWorkbook.Close
End If
End Sub

Function VerificarPedido() As Boolean
'Lunes
If ActiveSheet.Range("J22") = "SI" Then
If ActiveSheet.Range("E83") = "" Or ActiveSheet.Range("F83") = "" Then
lunes = "lunes, "
'MsgBox ("Falta seleccionar menu del Lunes")
End If
End If
'Martes
If ActiveSheet.Range("J34") = "SI" Then
If ActiveSheet.Range("G83") = "" Or ActiveSheet.Range("H83") = "" Then
martes = "martes, "
'MsgBox ("Falta seleccionar menu del Martes")
End If
End If
'Miercoles
If ActiveSheet.Range("J46") = "SI" Then
If ActiveSheet.Range("I83") = "" Or ActiveSheet.Range("J83") = "" Then
miercoles = "miercoles, "
'MsgBox ("Falta seleccionar menu del Miercoles")
End If
End If
'Jueves
If ActiveSheet.Range("J58") = "SI" Then
If ActiveSheet.Range("K83") = "" Or ActiveSheet.Range("L83") = "" Then
jueves = "jueves, "
'MsgBox ("Falta seleccionar menu del Jueves")
End If
End If
'Viernes
If ActiveSheet.Range("J70") = "SI" Then
If ActiveSheet.Range("M83") = "" Or ActiveSheet.Range("N83") = "" Then
viernes = "viernes, "
'MsgBox ("Falta seleccionar menu del Viernes")
End If
End If
If lunes = "lunes, " Or martes = "martes, " Or miercoles = "miercoles, " Or jueves = "jueves, " Or viernes = "viernes, " Then
'Alerta de los dias no completados
MsgBox ("Falta seleccionar menu ó postre del día: " + lunes + martes + miercoles + jueves + viernes)
'If a = vbNo Then Cancel = True
VerificarPedido = False
Exit Function
End If
VerificarPedido = True
End Function

Pon las macros que te envié en un archivo nuevo y realiza las pruebas. Después trata de adaptar el código a tu macro. Verás que mi opción funciona. Después de revisar el funcionamiento, valoras la respuesta, si quieres que lo adapte a tu macro, crea una nueva pregunta.

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas