Página 1 de 1

Evitar acesso no modo leitura

Enviado: 19 Out 2017 às 07:19
por Isnar
Pessoal bom dia!

Tenho uma planilha com macro de login de acesso, porém quando outro usuário executa o arquivo em seu computador ao qual o Excel não está habilitado para macro ele executa normalmente (solicitando habilitar macro), mas até permitindo edição e salvamento sem solicitar a login. Eu tentei diversas funções para corrigir mas sem sucesso, vocês poderiam me indicar alguma função para evitar que qualquer usuário abra a planilha sem fazer login na macro?

Re: Evitar acesso no modo leitura

Enviado: 19 Out 2017 às 07:28
por alexandrevba
Bom dia!!

Não há como garantir que as macros fiquem habilitadas, embora há algumas formas de que ajude a resolver!

Uma das possível forma de resolver, ocultar todas as guias de acesso ao arquivo (
Código: Selecionar todos
 .Worksheets("Plan1").Visible = xlSheetVisible
), deixando apenas uma guia (Menu), para acessar novamente o Userform de login.


Edição:
Altere para .Visible = xlVeryHidden

Att

Evitar acesso no modo leitura

Enviado: 19 Out 2017 às 08:04
por Isnar
Sim, fiz algo parecido mas não funcionou.
Application.DisplayFullScreen = True
ActiveWorkbook.Unprotect "15"
Sheets("Menu").Visible = True
Sheets("DRECompMês ").Visible = True
Sheets("DRECompAcum").Visible = True
Sheets("Acessos").Visible = True
Sheets("DREResumo").Visible = True
Sheets("DadosViab.").Visible = True
Sheets("CustoGusa").Visible = True
Sheets("CustoCarvão").Visible = True
Sheets("CustoUTM").Visible = True
Sheets("CustoFundição").Visible = True
Sheets("BPContábil").Visible = True
Sheets("BPGerencial").Visible = True
Sheets("IND.").Visible = True
Sheets("Transporte").Visible = True
Sheets("NCG").Visible = True
Sheets("FC").Visible = True
Sheets("Graficos").Visible = True
Sheets("Dinamica").Visible = True
Sheets("DadosGrafico").Visible = True
Sheets("DREConsolid").Visible = True
Sheets("DREGusa").Visible = True
Sheets("DRETermo").Visible = True
Sheets("DREFund").Visible = True
Sheets("DRESilvCarb").Visible = True
Sheets("DREUTM").Visible = True
Sheets("DRECorp").Visible = True
Sheets("PE").Visible = True
Sheets("NCG A").Visible = True
Sheets("PE 2").Visible = True
Sheets("FC A").Visible = True
Sheets("EMPRESTIMO DE CURTO PRAZO (2)").Visible = True

Application.Visible = False
UserForm1.Show

Re: Evitar acesso no modo leitura

Enviado: 19 Out 2017 às 08:28
por alexandrevba
Bom dia!!

Como não funcionou? Detalhe melhor!!

Use:
Edição:
Altere para .Visible = xlVeryHidden

Você pode fechar e abrir o seu arquivo com somente essa (Menu) guia visível.
Código: Selecionar todos
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Esse código deve ser inserido dentro do módulo de EstaPasta_de_trabalho
    Sheets("Menu").Visible = True
    Call AleVBA_27547 'Para ocultar as guias
End Sub
Código: Selecionar todos
Private Sub Workbook_Open()
'Esse código deve ser inserido dentro do módulo de EstaPasta_de_trabalho
    Sheets("Menu").Visible = True
    Call AleVBA_27547 'Para ocultar as guias
End Sub
################################
Dica de loop...
Código: Selecionar todos
Sub AleVBA_27547()
'Dica para seu código postado na questão do loop entre as guias
Dim ws As Worksheet

Sheets("Menu").Visible = False
For Each ws In ActiveWorkbook.Worksheets
    Select Case UCase(ws.Name)
        Case "Menu"
            ws.Visible = True
        Case Else
            ws.Visible = False
    End Select
Next ws

End Sub
Att

Evitar acesso no modo leitura

Enviado: 19 Out 2017 às 08:45
por Isnar
eu ocultei todas as guias (menos uma instruindo o usuário a habilitar a macro) e fiz essa macro, agora eu não sei o porque outro usuário que não tem a macro habilitada consegue visualizar a planilha normalmente, só aparece a guia de login se ele clicar em habilitar macro. Há eu ocultei as guias no sentido de proteção de planilha deixa eu verificar Visible = xlVeryHidden eu não tinha atentado para isso.

Re: Evitar acesso no modo leitura

Enviado: 19 Out 2017 às 09:28
por Isnar
alexandrevba escreveu:Bom dia!!

Como não funcionou? Detalhe melhor!!

Use:
Edição:
Altere para .Visible = xlVeryHidden

Você pode fechar e abrir o seu arquivo com somente essa (Menu) guia visível.
Código: Selecionar todos
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Esse código deve ser inserido dentro do módulo de EstaPasta_de_trabalho
    Sheets("Menu").Visible = True
    Call AleVBA_27547 'Para ocultar as guias
End Sub
Código: Selecionar todos
Private Sub Workbook_Open()
'Esse código deve ser inserido dentro do módulo de EstaPasta_de_trabalho
    Sheets("Menu").Visible = True
    Call AleVBA_27547 'Para ocultar as guias
End Sub
################################
Dica de loop...
Código: Selecionar todos
Sub AleVBA_27547()
'Dica para seu código postado na questão do loop entre as guias
Dim ws As Worksheet

Sheets("Menu").Visible = False
For Each ws In ActiveWorkbook.Worksheets
    Select Case UCase(ws.Name)
        Case "Menu"
            ws.Visible = True
        Case Else
            ws.Visible = False
    End Select
Next ws

End Sub
Att
Resolvido, muito obrigado.