none
Desabilitar Salvar e Salvar Como VBA ? RRS feed

  • Pergunta

  • Prezados,

    existe alguma opção para desativar os botões ou funçoes salvar e salvar como do excel 2007 / 2003 ?

    Att,

    Estanislau Frade


    Att, Estanislau Frade msn: lauedele@hotmail.com email: estanislaufrade@yahoo.com.br estanislau.frade@vale.com

    sexta-feira, 24 de agosto de 2012 17:51

Respostas

  • Resumindo, não existe uma forma segura de garantir que um usuário faça a ação Salvar Como ou simplesmente salve sua pasta de trabalho. Se uma pessoa abrir a pasta de trabalho e desabilitar as macros, não há nada que você possa fazer. No entanto, você pode seguir algumas das dicas abaixo:

    1 - Use o código que apresentei acima para a pasta de trabalho abrir apenas num único lugar.

    2 - Proteja as planilhas da pasta de trabalho com senha.

    3 - Ao abrir a pasta de trabalho, force para que ela seja sempre somente para leitura:

    Private Sub Workbook_Open()
        ThisWorkbook.ChangeFileAccess xlReadOnly
    End Sub

    4 - Impeça o usuário de salvar a pasta de trabalho:

    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        Cancel = True
    End Sub

    5 - No Windows Explorer, clique com o botão direito na pasta de trabalho e em seguida Propriedades. Habilita o atributo do arquivo para Somente Como Leitura.

    6 - Converse com o administrador da sua empresa e peça pra ele criar um caminho na rede em que somente você tenha permissão de leitura/escrita e os demais usuários apenas leitura.

    7 - Coloque uma senha para gravação de sua pasta de trabalho. Para fazer isso, vá no menu salvar como (F12), clique no botão Ferramentas >> menu Opções Gerais e coloque uma senha de gravação.


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    • Marcado como Resposta Estanislau Frade quarta-feira, 29 de agosto de 2012 23:04
    segunda-feira, 27 de agosto de 2012 21:37
    Moderador

Todas as Respostas

  • Não existe uma forma segura de prevenir que o usuário faça uma cópia de sua pasta de trabalho. Por melhor que seja seu controle sobre o Excel, um usuário poderá simplesmente copiar a pasta de trabalho pelo windows explorer e colar em outro local.

    Quando quero que uma pasta seja única e não possua nenhuma cópia, eu crio uma macro que verifique seu caminho. Se seu caminho for diferente do que deveria ser, saio da pasta de trabalho.

    Por exemplo, existe uma pasta de trabalho que ela deve existir somente no caminho c:\temp\benzadeus.xlsm. Se alguém fizer uma cópia dessa pasta de trabalho - ou até renomeá-la - ela não abrirá. A rotina para alcançar isso é mostrada abaixo, cole-a na classe EstaPasta_de_trabalho:

    Private Sub Workbook_Open()
        Const c_sCaminho = "C:\temp\Benzadeus.xlsm"
        
        'Desabilita a tecla Ctrl+Break
        Application.EnableCancelKey = xlDisabled
        
        If ThisWorkbook.FullName <> c_sCaminho Then
            MsgBox "Não é possível criar uma cópia do arquivo '" & _
              c_sCaminho & "'. Favor abrir a versão original." _
              , vbCritical
            ThisWorkbook.Close SaveChanges:=False
        End If
        
    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    • Sugerido como Resposta Daniel S. Silva sábado, 1 de setembro de 2012 18:23
    sexta-feira, 24 de agosto de 2012 22:01
    Moderador
  • Existe alguma opção para evitar que seje usada o salvar ou até o salvar como, quero evitar ao máximo que a minha pasta de trabalho seje alterada.

    Tipo se a pessoa tentar salvar, a pasta feche, sem ser alterada ?


    Att, Estanislau Frade msn: lauedele@hotmail.com email: estanislaufrade@yahoo.com.br estanislau.frade@vale.com

    segunda-feira, 27 de agosto de 2012 02:17
  • Resumindo, não existe uma forma segura de garantir que um usuário faça a ação Salvar Como ou simplesmente salve sua pasta de trabalho. Se uma pessoa abrir a pasta de trabalho e desabilitar as macros, não há nada que você possa fazer. No entanto, você pode seguir algumas das dicas abaixo:

    1 - Use o código que apresentei acima para a pasta de trabalho abrir apenas num único lugar.

    2 - Proteja as planilhas da pasta de trabalho com senha.

    3 - Ao abrir a pasta de trabalho, force para que ela seja sempre somente para leitura:

    Private Sub Workbook_Open()
        ThisWorkbook.ChangeFileAccess xlReadOnly
    End Sub

    4 - Impeça o usuário de salvar a pasta de trabalho:

    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        Cancel = True
    End Sub

    5 - No Windows Explorer, clique com o botão direito na pasta de trabalho e em seguida Propriedades. Habilita o atributo do arquivo para Somente Como Leitura.

    6 - Converse com o administrador da sua empresa e peça pra ele criar um caminho na rede em que somente você tenha permissão de leitura/escrita e os demais usuários apenas leitura.

    7 - Coloque uma senha para gravação de sua pasta de trabalho. Para fazer isso, vá no menu salvar como (F12), clique no botão Ferramentas >> menu Opções Gerais e coloque uma senha de gravação.


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    • Marcado como Resposta Estanislau Frade quarta-feira, 29 de agosto de 2012 23:04
    segunda-feira, 27 de agosto de 2012 21:37
    Moderador
  • Não existe uma forma segura de prevenir que o usuário faça uma cópia de sua pasta de trabalho. Por melhor que seja seu controle sobre o Excel, um usuário poderá simplesmente copiar a pasta de trabalho pelo windows explorer e colar em outro local.

    Quando quero que uma pasta seja única e não possua nenhuma cópia, eu crio uma macro que verifique seu caminho. Se seu caminho for diferente do que deveria ser, saio da pasta de trabalho.

    Por exemplo, existe uma pasta de trabalho que ela deve existir somente no caminho c:\temp\benzadeus.xlsm. Se alguém fizer uma cópia dessa pasta de trabalho - ou até renomeá-la - ela não abrirá. A rotina para alcançar isso é mostrada abaixo, cole-a na classe EstaPasta_de_trabalho:

    Private Sub Workbook_Open()
        Const c_sCaminho = "C:\temp\Benzadeus.xlsm"
        
        'Desabilita a tecla Ctrl+Break
        Application.EnableCancelKey = xlDisabled
        
        If ThisWorkbook.FullName <> c_sCaminho Then
            MsgBox "Não é possível criar uma cópia do arquivo '" & _
              c_sCaminho & "'. Favor abrir a versão original." _
              , vbCritical
            ThisWorkbook.Close SaveChanges:=False
        End If
        
    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    Boa tarde,

    É possível adicionar uma exceção ao código acima para que a planilha abra em mais um local?

    Grato,

    Fábio

    sábado, 17 de agosto de 2013 17:03
  • Private Sub Workbook_Open()
        Const c_sCaminho1 = "C:\temp\Benzadeus.xlsm"
        Const c_sCaminho2 = "C:\temp\Benzadeus2.xlsm"
        
        'Desabilita a tecla Ctrl+Break
        Application.EnableCancelKey = xlDisabled
        
        If ThisWorkbook.FullName <> c_sCaminho1 And ThisWorkbook.FullName <> c_sCaminho2 Then
            MsgBox "Favor abrir a pasta de trabalho original." _
              , vbCritical
            ThisWorkbook.Close SaveChanges:=False
        End If
        
    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    quarta-feira, 28 de agosto de 2013 01:59
    Moderador
  • Boa tarde,

    Não tenho muito conhecimento em VBA e estou procurando esse mesmo processo no Word, atualmente utilizo o Office 365?

    Buscando em vários fóruns consegui um processo bloqueando a impressão, mas preciso restringir as opções de salavr também.

    Private WithEvents CW As Word.Application

    Private Sub Document_Open()
        Set CW = Word.Application
    End Sub

    Private Sub Class_Initialize()
        Set CW = Word.Application
    End Sub

    Private Sub CW_DocumentBeforePrint(ByVal Doc As Document, Cancel As Boolean)
        MsgBox "Impressão cancelada via 'DocumentBeforePrint'", vbExclamation
        Cancel = True
    End Sub
    domingo, 5 de fevereiro de 2017 16:23
  • Ao inserir um código no fórum, utilize blocos de código. Para utilizar essa ferramenta, clique no botão cuja legenda é “Inserir bloco de código” na barra do editor de mensagens do fórum. Uma janela aparecerá onde você deverá colar seu código cru na caixa de texto à esquerda. Então, selecione a opção Vb.Net na caixa de combinação que você verá em cima à esquerda e depois clique no botão Inserir.

    ---

    Tente algo como:

    Private Sub CW_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
        Cancel = True
        MsgBox "Não é permitido salvar.", vbExclamation
    End Sub
    


    http://www.ambienteoffice.com.br || Grupo de WhatsApp: https://chat.whatsapp.com/K1uey5Q4yJdKnsgWkVQAZG

    segunda-feira, 6 de fevereiro de 2017 19:08
    Moderador
  • Tem como fazer a mesma coisa so que com arquivos do Word?!
    quarta-feira, 3 de janeiro de 2018 13:44
  • Bom dia, não sei se ajuda ainda. mas encontrei isso

    http://excelevba.com.br/nao-salvar/

    quinta-feira, 23 de maio de 2019 13:55