Ir ao conteúdo
  • Cadastre-se

Excel Desabilitar código de entrada


Ir à solução Resolvido por Visitante,

Posts recomendados

Prezados, gostaria de saber se tem como, ao abrir um arquivo Excel que contenha o código a seguir, evitar que o código seja executado e o arquivo abra normalmente, possibilitando que sejam feitas alterações. Por exemplo, antes ao prender a tecla SHIFT e dar dois cliques no arquivo, na área de trabalho, o arquivo abria normalmente, ignorando a macro auto-open.

Caso contrário, como poderia ser feito para acessar o arquivo e poder alterá-lo, pois em código semelhante, ao sair o ambiente é restaurado, mas não permitiria o acesso para alterações.

 

No aguardo, agradeço.

 

Exemplo do código de entrada que, em alguma ocasiões, gostaria de evitar para acessar o arquivo normalmente:

 

ub lsLigarTelaCheia()
       'Desliga atualização de tela
        Application.ScreenUpdating = False
        'Maximiza o tamanho da tela
        Application.WindowState = xlMaximized
        'Oculta todas as guias  de  menu
        Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
        'Ocultar  barra  de  fórmulas
        Application.DisplayFormulaBar = False
        'Ocultar  barra  de  status,  disposta  ao  final  da planilha
        Application.DisplayStatusBar = False
        'Alterar  o  nome  do  Excel  que  queira  que  apareça  na  barra de  título
        Application.Caption = "Gerenciamento e Controle de Estoque - Material de Expediente Codificado"
        With ActiveWindow
                'Ocultar  barra  horizontal
                .DisplayHorizontalScrollBar = False
                'Ocultar  barra  vertical
                .DisplayVerticalScrollBar = False
                ''Ocultar  guias  das  planilhas
                .DisplayWorkbookTabs = False
                'Oculta  os  títulos  de  linha  e  coluna
                .DisplayHeadings = False
                'Oculta  valores  zero  na  planilha
                '.DisplayZeros = False
                'Oculta  as  linhas  de  grade  da  planilha
                '.DisplayGridlines = False
        End With
     
     
End Sub

Link para o comentário
Compartilhar em outros sites

Não sei se entendi corretamente, mas aqui vai uma ideia.

Na sub Auto_Open coloque cópia do código abaixo, assim uma caixa de mensagem permitirá ao usuário escolher se deseja abrir o arquivo sem formatar o Aplicativo. Se escolher "Não" (não editar) então o código lsLigarTelaCheia será executado.
 

If MsgBox("DESEJA ABRIR PARA EDITAR ?", vbYesNo) = vbNo Then
  lsLigarTelaCheia
 End If

 

Link para o comentário
Compartilhar em outros sites

Caro osvaldomp, bom dia. Muito obrigado, funcionou perfeitamente, porém, como não desejaria deixar a opção de editar para qualquer usuário que for abrir o arquivo, gostaria de saber se há alguma combinação de teclas que, pressionadas antes de clicar no atalho do arquivo, consiga diretamente abrir o arquivo para edição, como por exemplo a tecla SHIFT que em versões anteriores do Excel funcionava?

 

No aguardo, antecipadamente agradeço.

Link para o comentário
Compartilhar em outros sites

Olá, Joseph.

Se você quer limitar quais usuários poderão inibir macros Auto_Open ou WB_Open e assim abrir o arquivo no modo edição, utilizando para isso a opção de pressionar Shift enquanto abre o arquivo, essa não me parece uma opção adequada pois esse recurso é de conhecimento público (imagino que a MS inseriu essa opção para permitir que se abram arquivos não confiáveis que poderão conter vírus em macros).

 

Uma alternativa seria substituir a MsgBox por InputBox no código que sugeri antes, e na InputBox o usuário deveria inserir uma senha para poder abrir o arquivo no modo edição.

 

Por último, não consta que o recurso de apertar Shift para inibir macros Auto_Open ou WB_Open tenha sido desativado. Continua valendo. E, apesar de ser de conhecimento público, se você quiser utilizá-lo, vale a pena pesquisar as condições que eventualmente poderão ativar/desativar esse recurso, como:

1. se o arquivo for aberto diretamente do Excel ou do Windows,

2. se o arquivo estiver em rede,

3. se o arquivo estiver em pasta relacionada em Arquivo / Central de Confiabilidade / Configurações / Locais Confiáveis,

4. se anteriormente, ao abrir o arquivo foi exibida mensagem de ativar macros e foi clicado em "Sim", ...

Link para o comentário
Compartilhar em outros sites

Olá osvaldomp. Novamente obrigado pela resposta. Gostaria de usar a sua sugestão "Uma alternativa seria substituir a MsgBox por InputBox no código que sugeri antes, e na InputBox o usuário deveria inserir uma senha para poder abrir o arquivo no modo edição." apenas para 1 (um) usuário (eu mesmo), porém não sei como fazer. Vou colar abaixo o código que está no evento open da pasta de trabalho (não é macro auto open). Se você puder ajustá-lo para atender a sua sugestão ficaria agradecido:

 

Private Sub Workbook_Open()

Sheets("Menu").Select

If MsgBox("Deseja abrir para editar?", vbQuestion + vbYesNo + vbDefaultButton2, "Banco da Amazônia - SISMEC") = vbNo Then
  lsLigarTelaCheia
End If
        
End Sub

 

Sub lsLigarTelaCheia()
       'Desliga atualização de tela
        Application.ScreenUpdating = False
        'Maximiza o tamanho da tela
        Application.WindowState = xlMaximized
        'Oculta todas as guias  de  menu
        Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
        'Ocultar  barra  de  fórmulas
        Application.DisplayFormulaBar = False
        'Ocultar  barra  de  status,  disposta  ao  final  da planilha
        Application.DisplayStatusBar = False
        'Alterar  o  nome  do  Excel  que  queira  que  apareça  na  barra de  título
        Application.Caption = "Gerenciamento e Controle de Estoque - Material de Expediente Codificado"
        With ActiveWindow
                'Ocultar  barra  horizontal
                .DisplayHorizontalScrollBar = False
                'Ocultar  barra  vertical
                .DisplayVerticalScrollBar = False
                ''Ocultar  guias  das  planilhas
                .DisplayWorkbookTabs = False
                'Oculta  os  títulos  de  linha  e  coluna
                .DisplayHeadings = False
                'Oculta  valores  zero  na  planilha
                '.DisplayZeros = False
                'Oculta  as  linhas  de  grade  da  planilha
                '.DisplayGridlines = False
        End With
     
     
End Sub

Link para o comentário
Compartilhar em outros sites

  • Solução

Experimente:

Private Sub Workbook_Open()
 Dim rsp As String
  rsp = Application.InputBox("INSIRA A SENHA PARA ABRIR O ARQUIVO NO MODO EDIÇÃO", "INSIRA A SENHA ")
  If rsp <> "1234" Then lsLigarTelaCheia
End Sub

 

Para abrir o arquivo no "modo edição" insira 1234 na InputBox e aperte Enter ou clique em OK.

 

Lembrando que para não permitir livre acesso à senha 1234 (altere se desejar), o projeto VBA precisará ser protegido: no menu do editor de VBA ~~~> Ferramentas / Propriedades ... / Proteção

Link para o comentário
Compartilhar em outros sites

Instale uma cópia do código abaixo no lugar do anterior.

Private Sub Workbook_Open()
 Dim oTB As Object
  Set oTB = ActiveSheet.OLEObjects.Add(ClassType:="Forms.TextBox.1")
  With oTB
   .Left = 300: .Top = 90: .Width = 140: .Height = 25
   .Object.BackColor = vbYellow
   .Object.Font.Size = 12
   .Object.TextAlign = 2
   .Object.PasswordChar = "@"
  End With
End Sub

Instale uma cópia do código abaixo no módulo da planilha que estará ativa ao abrir o arquivo.

Private Sub TextBox1_LostFocus()
 If TextBox1.Value <> "Jmps2019" Then lsLigarTelaCheia
 Me.OLEObjects("TextBox1").Delete
End Sub

funcionamento - o primeiro código irá carregar uma TextBox na planilha ativa, então selecione o campo amarelo da TextBox, digite a senha Jmps2019 e em seguida selecione qualquer célula para tirar o foco da TextBox e assim acionar o segundo código

 

Coloquei no código o caractere arroba (@) para substituir a senha, altere se desejar.

Link para o comentário
Compartilhar em outros sites

Caro osvaldop, bom dia. seguindo sua orientação colei o código abaixo em substituição ao anterior e o segundo código no módulo da planilha "Menu", porém deu "erro em tempo de execução 1004 - Não é possível inserir objeto", na linha em destaque abaixo:

 

Private Sub Workbook_Open()

 

Sheets("Menu").Select

 

 Dim oTB As Object

  Set oTB = ActiveSheet.OLEObjects.Add(ClassType:="Forms.TextBox.1")

  With oTB

   .Left = 300: .Top = 90: .Width = 140: .Height = 25

   .Object.BackColor = vbYellow

   .Object.Font.Size = 12

   .Object.TextAlign = 2

   .Object.PasswordChar = "@"

  End With

End Sub

 

Diante disso pergunto:

1) como corrigir?

2) Teria como manter o imput box anterior, porém somente substituir os caracteres da senha pelo @?

 

No aguardo, desde já agradeço.

Link para o comentário
Compartilhar em outros sites

2 horas atrás, Joseph2018 disse:

Diante disso pergunto:

1) como corrigir?

Disponibilize uma amostra do seu arquivo Excel com os códigos instalados.

EDIT: informe também se o seu Excel aceita a inserção manual de um ActiveX TextBox:

menu Desenvolvedor / Inserir / Controles ActiveX / Caixa de Texto

 

2) Teria como manter o imput box anterior, porém somente substituir os caracteres da senha pelo @?

Não.

 

 

 

Link para o comentário
Compartilhar em outros sites

Caro osvaldomp. A solução do inputbox que você me forneceu atende perfeitamente o que precisava. O caso da substituição dos caracteres da senha por caracteres especiais era apenas um refinamento, mas que é plenamente dispensável, no meu caso. Assim, não é necessário um esforço maior para contemplar esta situação.

 

Gostaria de agradecer imensamente a pronta e competente ajuda que você me deu. Espero contar com você em outras ocasiões.

 

Grande abraço.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...