Ir ao conteúdo
  • Cadastre-se

Como fazer para pedir uma SENHA antes de rodar uma MACRO


Posts recomendados

Olá pessoal, seguinte consigo fazer com que determinada macro só seja rodada após a confirmação de uma senha?

Ex.: tenho numa planilha vários botões de comando, com sua respectiva macro. Mas tem uma macro que chama o formulário autoexecutavel do excel (ShowDataForm) com o qual incluo e altero os dados de uma referida planilha, então gostaria que quem fosse chamar o formulário fosse apenas quem tem autorizão, pois a planilha fica protegida.

Assim, gostaria que ao clicar no botão que chama o formulário fosse

solicitada uma senha. Se a senha estiver correta, então a pessoa tem

acesso ao formulário, podendo fazer alterações na planilha, caso contrário aparece a mensagem dizendo que o acesso não é permitido.

OBS.: se possível, será qeu consigo fazer com que ao digitar a senha,o texto se trsnaformasse em asteriscos (***)

olha a macro que chama o formulário:

Sub Incluir_ou_Alterar()

Sheets("Planilha tal").Select

ActiveSheet.Unprotect "minha senha"

Sheets("Menu Principal").Select

Worksheets("Planilha tal").ShowDataForm

ActiveSheet.Protect "minha senha"

End Sub

desde já obrigado

Lamcarter

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Bom, pode-se trabalhar com uma condicional:

coloque na sua planilha uma caixa de texto (activeexe) TextBox1

uma constante como variável global

Não esqueça esse detalhes. Clique com o lado direito do mouse na caixa de texto, em propriedades, mude a propriedade PasswordChar = "*"

Isso faz com que não se vizualize a senha.

Const Senha = "1234"

Sub Incluir_ou_Alterar()

If TextBox1.Text<>Senha Then

Msgbox "Senha invalida",VbCritical,"ACESSO NEGADO"

TextBox1.Text = ""

Exit Sub

Else

TextBox1.Text = ""

Sheets("Planilha tal").Select

ActiveSheet.Unprotect "minha senha"

Sheets("Menu Principal").Select

Worksheets("Planilha tal").ShowDataForm

ActiveSheet.Protect "minha senha"

End IF

End Sub

Pode ser uma opção, caso tenha encontrado outra até interessante postar

Abraços :rolleyes:

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Olá, primeiramente obrigado pela atenção.

Entendi perfeitamente seu exemplo, porém nao tenho tanta habilidade assim com VBA, por favor veja se estou no caminho certo.

no VBA, fui em inserir formulário, inclui uma textBox e alterei a propriedade como indicado. é isso?

e outra coisa como faço para configurar essa "constante como variável global".

por fvor se puder me auxiliar, desde já agradeço.

abc

Lamcarter

Link para o comentário
Compartilhar em outros sites

Bom, quanto a caixa de texto, ela deve estar incorporada na própria planilha, segue algumas ilustrações que pode ajudar a esclarecer o que pode fazer, inclusive sobre o detalhe da constante como variável global e mais alguns toques sobre declaração de variáveis caso tenha dúvidas.

Onde colocar sua caixa de texto:

sobretextbox1activeexe.jpg

Quanto as propriedades:

propriedadesdatextbox.jpg

Quanto a variáveis:

codigovbavar.jpg

Bom, acredito que ajude bastante a imagem. caso tenha alguma dúvida mais sobre VBA, quem sabe possa ajudar.

É repartindo o pão que todos tem a melhor solução... :D

Link para o comentário
Compartilhar em outros sites

Opa Amigo!!!!!!!!,

seguinte onde trabalho é intranet, não tenho acesso livre, por isso não aparecia as figuras, ontem consegui acessar de casa, porém tem um detalhe, eu uso o excel 2003 e pelo que vi ele nao possui controle activex, será que ai fechou minha porta!!!!!!!

ou você sabe como fazer isso no excel 2003?

Obrigado pela atencao.

Link para o comentário
Compartilhar em outros sites

OOPS! Lamcarter, nem precisou do final de semana:D

Lembrei, é assim Clique na barra de menu principal em EXIBIR -> Barra de Ferramentas ->

Caixa de Ferramentas de Controle... pronto uála... aí está os controles ActiveX, aliás escrevi errado em alguma lugar por aí nos textos:wacko: rsrs...

Bom espero que tenha entendido a proposta da senha, beleza...

Link para o comentário
Compartilhar em outros sites

Boa Noite Armand, final de semana tentei realizar a proeza, acho que estou quase lá. rsrsrs

seguinte fiz tudo como você passou, porém quando executo a macro aparece.

ERRO EM TEMPO DE EXECUÇÃO.

O OBJETO É OBRIGATORIO.

Assim clicando em "depurar" na caixa de msg, ele seleciona a seguinte linha

If TextBox2.Text <> Senha Then

como já disse entendo pouco de vba, porém notei que quando executo a macro não disponibiliza a Caixa de Texto para que o usuario digite a senha, nao teria uma linha de comando "chamando" e dando ao usuario a opcao de digitar a senha?

obrigado pela atenção.

Demorei tive que ir pra outra cidade e nao consegui acessar a net!!

Lamcarter

Link para o comentário
Compartilhar em outros sites

CONSEGUI

bom de uma maneira um pouco diferente Armand, mas consegui.

olha como ficou o código:

SUB Incluir_ou_Alterar Macro

Senha = "12345"

resposta = InputBox("Digite a senha para continuar?")

If resposta <> Senha Then

MsgBox "Esta senha não confere.", vbCritical, "Atenção"

Exit Sub 'não continuar a macro

End If

'continuar a macro

'inserir abaixo o resto da macro

Sheets("Plan2").Select

ActiveSheet.Unprotect "minha senha"

Sheets("Plan1").Select

Worksheets("Plan2").ShowDataForm

ActiveSheet.Protect "minha senha"

End Sub

-------------------------///----------------------------------------------

Porém agora preciso proteger as macros, como faço, como colocar uma senha para editar as macros, ou no Visual Basic, você pode me ajudar??

desde já obrigado

Lamcarter:D:D

Link para o comentário
Compartilhar em outros sites

Olá Lamcarter.

Primeiro, quanto ao erro que deu, certamente o objeto TextBox2.Text não existe na sua Planilha, então ele reclama esse objeto. Pode ser o Name do Objeto.

Quanto ao InputBox, é complicado, ele não oferece suporte para o programador para alterar facilmente a condição de mascara. Então temos que apelar para uma programação mais refinada, talvez ainda não conheça, o uso de API's.

O InputBox é útil para entradas simples de dados, não para senhas por isso usei a caixa de texto incluindo um activeX na planilha. Seu erro com a TextBox, é nomeação da mesma apenas isso. melhor recorrer por esse recurso por enquanto.

Link para o comentário
Compartilhar em outros sites

  • 2 anos depois...

Eu copiei, colei e fiz algumas adaptações com a macro já criada por Lamcarter

Sub MarcarEntrada()

Senha = "12345"

resposta = InputBox("Digite a senha para continuar?")

If resposta <> Senha Then

MsgBox "Esta senha não confere.", vbCritical, "Atenção"

Exit Sub 'não continuar a macro

End If

'continuar a macro

'inserir abaixo o resto da macro

Sheets("Principal").Select

ActiveSheet.Unprotect "12345"

Sheets("Principal").Select

Worksheets("Principal").ShowDataForm

ActiveSheet.Protect "12345"

ActiveCell.Value = Now

End Sub

Porém ao desenvolver ocorre o erro = Erro em tempo de execução`1004`

E como aparece o formulário se eu não o criei ?

ou ShowDataForm é padrão do excel ?

Sds,

Link para o comentário
Compartilhar em outros sites

  • 2 anos depois...

Eu copiei, colei e fiz algumas adaptações com a macro já criada por Lamcarter

Sub MarcarEntrada()

Senha = "12345"

resposta = InputBox("Digite a senha para continuar?")

If resposta <> Senha Then

MsgBox "Esta senha não confere.", vbCritical, "Atenção"

Exit Sub 'não continuar a macro

End If

'continuar a macro

'inserir abaixo o resto da macro

Sheets("Principal").Select

ActiveSheet.Unprotect "12345"

Sheets("Principal").Select

Worksheets("Principal").ShowDataForm

ActiveSheet.Protect "12345"

ActiveCell.Value = Now

End Sub

Porém ao desenvolver ocorre o erro = Erro em tempo de execução`1004`

E como aparece o formulário se eu não o criei ?

ou ShowDataForm é padrão do excel ?

Sds,

Bom, pode-se trabalhar com uma condicional:

coloque na sua planilha uma caixa de texto (activeexe) TextBox1

uma constante como variável global

Não esqueça esse detalhes. Clique com o lado direito do mouse na caixa de texto, em propriedades, mude a propriedade PasswordChar = "*"

Isso faz com que não se vizualize a senha.

Pode ser uma opção, caso tenha encontrado outra até interessante postar

Abraços :rolleyes:

Armand vi sua macro e estou tentando utlizar porém eu preciso que a senha não fosse um valor fixo e sim de acordo com o usuário que estiver usando a planilha

Se você puder me ajudar ficarei muito grato

Obg

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!