Ir ao conteúdo

Posts recomendados

Postado

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

Postado

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

 

Postado

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.

Postado

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

Postado

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

  • Solução
Postado

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

Postado

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.

Postado

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.

Postado

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.

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

 

 

 

Postado

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.

  • Membro VIP
Postado

@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

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

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

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!