Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
  • Avatar do usuário
Por gthomaz
Posts
#22954
Boa noite!

Fiz um arquivo com várias planilhas com uma macro de login e senha que ativa antes de entrar no excel.
Contudo caso a pessoa não ative a macro, ela consegue ver o conteúdo da planilha. Com isso estou pensando em deixar várias planilhas ocultas e ter apenas uma dizendo para a pessoa habilitar as macro se não, não terá acesso as outras planilhas. E assim, a pessoa habilitando as macros e efetue login corretamente, que seja exibida algumas planilhas, pois uma deles deve continuar oculta, já que é a planilha que contém as informações de senhas.
Poderiam me ajudar?

Tem como bloquear para não ser exibida a planilha de senhas clicando no botão "Reexibir" quando clica com o botão direito em alguma das abas?

Obs.: As planilhas estão protegidas por senha também (123).
Para logar, usuário "teste" senha "abc"

Desde já agradeço!
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por FelipeMGarcia
Avatar
#22956
Thomaz, eu não manjo de macro, mas sei que ao apertar ALT + F11 ao clicar em uma aba aparece o campo do lado esquerdo chamado Visible, se você colocar Very Hidden, ele não aparece, mesmo apertando com o botão direito.

Espero que ajude.

Abs
Por marlonsarturi
Posts
#22958
Thomaz, eu não sei muito não... mas eu fiz uma planilha de analise de dados para um amigo meu e criei uma planilha chamada menu e uns botoes e nos botoes eu coloquei as macros para ativar a planilha e criei tambem na planilha ativa um botão para voltar para o menu....

Não sei se é assim que voce quer...

tipo eu criei o botão cliquei com o botão direito adicionar marcro e coloquei...
ex plan2.visible = true
plan2.activate
depois quando abrir a planilha crio outro botão para voltar ao menu
ex: plan2.visible = false
plan1.activate ( se plan1, for o menu no caso.)
Avatar do usuário
Por PietroFarias
Posts Avatar
#22985
Gthomaz,

Faça o seguinte:
1. Crie uma planilha em branco como capa inicial e nomeie esta planilha como INICIO;
2. Entre no VBE (ALT + F11). No lado esquerdo deverá ter duas janelas: Projeto - VBAProject e Propriedades. Caso essas janelas não estejam visíveis, pressione CTRL + R (para exibir Projeto VBAProject) e F4 (para exibir Propriedades);
3. Com exceção da planilha INICIO no qual você criou anteriormente, selecione as planilhas listadas em Projeto VBAProject uma a uma, e na janela Propriedades altere a propriedade Visible para xlSheetVisible como na imagem abaixo:
Imagem

4. Depois dê dois cliques no item EstaPasta_de_trabalho (se seu Excel estiver em português) que está dentro da janela Projeto VBAProject. E insira o algorítimo abaixo:
Código: Selecionar todos
Option Explicit
Dim Sht As Worksheet

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'ANTES DE FECHAR, OCULTAR TODAS AS PLANILHAS
Application.ScreenUpdating = False
    For Each Sht In ThisWorkbook.Worksheets
        If Sht.Name <> "INICIO" Then Sht.Visible = xlSheetVeryHidden
    Next
Application.ScreenUpdating = True
End Sub

Private Sub Workbook_Open()

Application.Visible = False
UserForm1.Show

'APÓS O LOGIN, VISUALIZAR TODAS AS PLANILHAS
Application.ScreenUpdating = False
    For Each Sht In ThisWorkbook.Worksheets
        Sht.Visible = xlSheetVisible
    Next
Application.ScreenUpdating = True
End Sub
Com isso quando abrir a planilha e efetuar com sucesso o login, todas as planilhas serão visualizadas. E quando fechar todas serão ocultadas, menos a planilha INICIO.

O resultado deverá ser este (desconsiderar minhas formatações :D ):
Imagem
Por gthomaz
Posts
#22987
PietroFarias escreveu:Gthomaz,

Faça o seguinte:
1. Crie uma planilha em branco como capa inicial e nomeie esta planilha como INICIO;
2. Entre no VBE (ALT + F11). No lado esquerdo deverá ter duas janelas: Projeto - VBAProject e Propriedades. Caso essas janelas não estejam visíveis, pressione CTRL + R (para exibir Projeto VBAProject) e F4 (para exibir Propriedades);
3. Com exceção da planilha INICIO no qual você criou anteriormente, selecione as planilhas listadas em Projeto VBAProject uma a uma, e na janela Propriedades altere a propriedade Visible para xlSheetVisible como na imagem abaixo:
Imagem

4. Depois dê dois cliques no item EstaPasta_de_trabalho (se seu Excel estiver em português) que está dentro da janela Projeto VBAProject. E insira o algorítimo abaixo:
Código: Selecionar todos
Option Explicit
Dim Sht As Worksheet

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'ANTES DE FECHAR, OCULTAR TODAS AS PLANILHAS
Application.ScreenUpdating = False
    For Each Sht In ThisWorkbook.Worksheets
        If Sht.Name <> "INICIO" Then Sht.Visible = xlSheetVeryHidden
    Next
Application.ScreenUpdating = True
End Sub

Private Sub Workbook_Open()

Application.Visible = False
UserForm1.Show

'APÓS O LOGIN, VISUALIZAR TODAS AS PLANILHAS
Application.ScreenUpdating = False
    For Each Sht In ThisWorkbook.Worksheets
        Sht.Visible = xlSheetVisible
    Next
Application.ScreenUpdating = True
End Sub
Com isso quando abrir a planilha e efetuar com sucesso o login, todas as planilhas serão visualizadas. E quando fechar todas serão ocultadas, menos a planilha INICIO.

O resultado deverá ser este (desconsiderar minhas formatações :D ):
Imagem
Pietro, obrigado pela ajuda!
Funcionou, mas só ficou uma coisa pra ficar do jeito que to precisando.
Queria que uma das planilhas continuasse oculta. Teria como fazer alguma condição tipo?
Gostaria que a Plan1 continuasse oculta

Segue em anexo a planilha já com o código que você criou.
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por PietroFarias
Posts Avatar
#22996
Sim. Utiliza o algorítimo abaixo. Perto da ultima linha tem entre aspas NOME DA PLANILHA. Altere para o nome da planilha desejada.
Código: Selecionar todos
Option Explicit
Dim Sht As Worksheet

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'ANTES DE FECHAR, OCULTAR TODAS AS PLANILHAS
Application.ScreenUpdating = False
    For Each Sht In ThisWorkbook.Worksheets
        If Sht.Name <> "INICIO" Then Sht.Visible = xlSheetVeryHidden
    Next
Application.ScreenUpdating = True
End Sub

Private Sub Workbook_Open()

Application.Visible = False
UserForm1.Show

'APÓS O LOGIN, VISUALIZAR TODAS AS PLANILHAS
Application.ScreenUpdating = False
    For Each Sht In ThisWorkbook.Worksheets
       If Sht.Name <>  "NOME DA PLANILHA" then Sht.Visible = xlSheetVisible
    Next
Application.ScreenUpdating = True
End Sub
Por gthomaz
Posts
#23004
PietroFarias escreveu:Sim. Utiliza o algorítimo abaixo. Perto da ultima linha tem entre aspas NOME DA PLANILHA. Altere para o nome da planilha desejada.
Código: Selecionar todos
Option Explicit
Dim Sht As Worksheet

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'ANTES DE FECHAR, OCULTAR TODAS AS PLANILHAS
Application.ScreenUpdating = False
    For Each Sht In ThisWorkbook.Worksheets
        If Sht.Name <> "INICIO" Then Sht.Visible = xlSheetVeryHidden
    Next
Application.ScreenUpdating = True
End Sub

Private Sub Workbook_Open()

Application.Visible = False
UserForm1.Show

'APÓS O LOGIN, VISUALIZAR TODAS AS PLANILHAS
Application.ScreenUpdating = False
    For Each Sht In ThisWorkbook.Worksheets
       If Sht.Name <>  "NOME DA PLANILHA" then Sht.Visible = xlSheetVisible
    Next
Application.ScreenUpdating = True
End Sub
Pietro, bom dia!

Obrigado pela ajuda! Funcionou perfeitamente!!! :D :D :D :D
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord