Ir ao conteúdo
  • Cadastre-se
Joseph2018

Excel RESOLVIDO Desabilitar código de entrada

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

Compartilhar este post


Link para o post
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

 

Compartilhar este post


Link para o post
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.

Compartilhar este post


Link para o post
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", ...

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro osvaldomp, mais uma vez obrigado. Se não for pedir muito, como colocar uma máscara para que ao invés dos caracteres da senha apareça, por exemplo, ******* ? Como ficaria para a senha Jmps2019?

 

No aguardo, antecipadamente agradeço.

Compartilhar este post


Link para o post
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.

Compartilhar este post


Link para o post
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.

Compartilhar este post


Link para o post
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.

 

 

 

Compartilhar este post


Link para o post
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.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Joseph2018

 

Como as respostas do Osvaldo foram úteis, faltou clicar em curtir.

Se a dúvida foi solucionada marque o tópico como Resolvido, conforme orientação no link da minha assinatura.

 

[]s

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!