Jump to content
paulosemblano

Proteção código VBA não funciona

Recommended Posts

paulosemblano

Tenho uma planilha feita no Excel 2003.

Apesar de não ter macros, protegi o VBA com senha (Alt+F11  -  Propriedades de VBAProject/Proteção), pois há uma planilha oculta como:

2 - xlSheetVeryHidden

Por isso protegi o VBA, para que o usuário não torne a planilha oculta.

Repito: não há módulos, formulários, macros, nada.

Ao abrir no Excel 2007 em modo de compatibilidade, para minha surpresa o VBA está ativo, pois a senha sumiu.

No Excel 2003 continua protegido, mas no Excel 2007 não.

Share this post


Link to post
Share on other sites
FreiNando

O Excel 2007 só carrega o Projecto VBA se pelo menos um procedimento for criado (Sub ou Function).

A password de proteção fica guardada no projecto VBA, por isso se você quer que a proteção funcione no 2007 tem de criar um procedimento, mesmo que não tenha código nenhum dentro.


O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles

Share this post


Link to post
Share on other sites
paulosemblano

Fiz alguns testes com o Excel 2007.

Criei um módulo no VBA e salvei o arquivo com extensão para macro.

Depois em Salvar como salvei como arquivo sem macro. Após responder positivamente à pergunta o arquivo é salvo.

As macros são excluídas, mas o projeto VBA fica em aberto.

Resultado: planilha onde tenho guardado coisas importantes, como senha por exemplo, e que ocultei pelo VBA podem ficar visíveis. Ou até para rodar uma macro que desprotege as planilhas visíveis.

Em minha opinião a Microsoft fez caca.

No Excel 2003 não acontecia isso.

👎 😡 🤔

Share this post


Link to post
Share on other sites
Nuno2020

Boa noite, eu tenho a mesma duvida,

Fiz tudo de acordo com o descrito neste site abaixo, pois o meu objetivo era precisamente ocultar uma folha do excel de forma permanente (sem ser possivel visualizar com o "unhide")

http://www.tomasvasquez.com.br/artigos/excel_planilhas.htm

mas quando chego à parte de criar uma senha no Visual Basic para que qualquer pessoa que aceda à janela do VB nao encontre a pasta, a mesma nao funciona. Abri de novo o documento (depois de ter salvo) e o VB nao pede senha, as alteraçoes que fiz ficam visiveis para quem quiser ver.

Não sei se entendi muito bem o que foi explicado aqui, é possivel se eu fizer mais alguma alteraçao?...

Alguem poderia ajudar a esclarecer?

Agradeço desde já

(tenho Office Plus10)

Share this post


Link to post
Share on other sites
Rhysand

Bom dia,

É complicado ter verdadeira protecção, pois é muito fácil com simples códigos numa pasta de trabalho a parte, desbloquear praticamente qualquer VBProject Excel e aceder as macros nos módulos/userforms etc... pois o nível de encriptação do office é quase o mesmo desde a sua criação.

Tenho vários VBProjects e tal como eu, podes inserir muitas e diversas modificações de forma a tentar proteger a pasta de trabalho de Excel. 

O VBProject deve ser protegido com uma password;

Todas as folhas de excel que se queira manter como ocultas, também podes criar um código para tal, o excel exige que uma folha deve ficar sempre visivel;

Podes criar uma linha com uma formula para obter os dados da linha  da mesma folha de excel onde tens os códigos, (exemplo: códigos na linha 2 e a linha com as formulas ser a linha 3),

após isso, podes escrever no módulo da folha de excel código para ocultar a linha (2), e ocultar as formulas da linha (3) da barra de formulas, como também criar uma mascara para ocultar os dados (formulas) da linha (3), isto tudo bloqueando a folha de excel também.

isto são alguns exemplos, posso colocar alguns códigos caso precises.(uso o office 2013 32)

Share this post


Link to post
Share on other sites
Nuno2020
2 horas atrás, Rhysand disse:

Bom dia,

É complicado ter verdadeira protecção, pois é muito fácil com simples códigos numa pasta de trabalho a parte, desbloquear praticamente qualquer VBProject Excel e aceder as macros nos módulos/userforms etc... pois o nível de encriptação do office é quase o mesmo desde a sua criação.

Tenho vários VBProjects e tal como eu, podes inserir muitas e diversas modificações de forma a tentar proteger a pasta de trabalho de Excel. 

O VBProject deve ser protegido com uma password;

Todas as folhas de excel que se queira manter como ocultas, também podes criar um código para tal, o excel exige que uma folha deve ficar sempre visivel;

Podes criar uma linha com uma formula para obter os dados da linha  da mesma folha de excel onde tens os códigos, (exemplo: códigos na linha 2 e a linha com as formulas ser a linha 3),

após isso, podes escrever no módulo da folha de excel código para ocultar a linha (2), e ocultar as formulas da linha (3) da barra de formulas, como também criar uma mascara para ocultar os dados (formulas) da linha (3), isto tudo bloqueando a folha de excel também.

isto são alguns exemplos, posso colocar alguns códigos caso precises.(uso o office 2013 32)

Boas,

Agradeço pela resposta desde já, eu nao entendo de programaçao nem se trata de proteger algo muito importante. A unica coisa que pretendia mesmo era eliminar o caminho para aceder à pasta tal qual eles fizeram nesse link que coloquei acima, para mim isso era o ideal.

http://www.tomasvasquez.com.br/artigos/excel_planilhas.htm

As folhas (onde estao as formulas que criei )  e que pretendia ocultar estao ocultas na folha excel, (as celulas estao tambem bloqueadas),  mas queria ainda assim que as "sheets" nao ficassem sequer visiveis, pois quem souber de VB, abre a janela e vê as "sheets" todas  lá, a partir daí pode torna-las visiveis no excel como explicam nesse link. E a password resolveria  isso

Mas nao existe entao possibilidade, neste Excel mais recente,  de colocar uma password para que essa pasta nao se abra dentro do VB  e revele todas as "sheets"?

Obrigado

Edited by Nuno2020

Share this post


Link to post
Share on other sites
Rhysand

Boa tarde,

Sabes adicionar o modo programador ao friso do Excel ?

-> Mostrar o separador Programador no friso do Excel: (O separador programador não é apresentado por predefinição, mas pode adicioná-lo)

     _ Clicar com botão direito do rato sobre o friso (abre janela de dialogo) ; seleccionar: personalizar friso... (abre nova janela com opções)

    _ na caixa das opções, do lado direito: seleccionar a caixa de modo programador, e sair dessa janela

... irá ficar com a opção modo programador sempre visível no friso

 

A SEGUINTE DESCRIÇÃO É PARA OCULTAR TODAS AS FOLHAS DE EXCEL EXCEPTO UMA (é obrigatório ficar uma visível sempre)

Agora com o separador modo programador, abrindo o mesmo, o primeiro ícone do lado esquerdo, de nome ( visual basic )

Clicando nele, acede ao modo de programador VBA

Do lado Esquerdo da janela, irá ter em cascata algo como: VBProject( nome da sua paste de trabalho aqui) ; Microsoft Excel Objects ; Este livro ; ... nomes das suas folhas de excel

Clique sobre: Este livro ( a janela que ocupa a parte central do ecrã deverá aparecer toda em branco) mas se quiser ter a certeza que esta na opção certa, por cima dessa janela em cascata, estão 3 ícones ( o da direita é uma pasta amarela..) , clicar sobre o primeiro ícone a esquerda

Na janela em branco que esta no centro da janela do ecrã escrever o seguinte procedimento:

Private Sub Workbook_Open()

ActiveWindow.DisplayWorkbookTabs = True

Application.ScreenUpdating = True

Application.Visible = True

Dim ws As Worksheet

For Each ws In Application.ThisWorkbook.Worksheets
    If ws.Name <> "Folha1" Then ' trocar Folha1 pelo nome da folha de Excel que irá ficar sempre visível
      ws.Visible = xlSheetVeryHidden
    End If
Next ws

Folha1.Select ' trocar Folha1 pelo nome da folha de Excel que irá ficar sempre visível e irá ser aberta
End Sub

 

A SEGUINTE DESCRIÇÃO É PARA OCULTAR UMA OU MAIS FOLHAS DE EXCEL

Executar os passo acima descritos e colocar o seguinte procedimento: 

Private Sub Workbook_Open()

ActiveWindow.DisplayWorkbookTabs = True

Application.ScreenUpdating = True

Application.Visible = True

Dim ws As Worksheet

For Each ws In Application.ThisWorkbook.Worksheets
    If ws.Name = "Folha1" Then ' trocar Folha1 pelo nome da folha de Excel que irá ficar OCULTA
      ws.Visible = xlSheetVeryHidden
    End If
Next ws

Folha4.Select ' trocar Folha4 pelo nome da folha de Excel que irá ficar sempre visível e irá ser aberta em primeiro plano
End Sub

 

EM VEZ DESTES PROCEDIMENTO TAMBÉM PODE NO MODO PROGRAMADOR :

Caso do lado esquerdo do janela onde  está a referida parte da janela em cascata, por baixo dessa não estar outra com o nome: Propriedades deste Livro, No separador de modo programador, clicar em View (ver) e Seleccionar Janela de propriedades, (por defeito deverá aparecer por baixo da outra janela, mas pode aparecer noutro lado do ecrã)

A partir daí basta clicar sobre a ou as folhas de Excel que queremos ter como Ocultas e na janela de propriedades, na última opção (visivel) selecionar opção 2 ( muito oculta) 

Para voltar a ver folha de excel é só aceder ao modo programador e colocar como visível, mas com este procedimento se fechar a pasta de trabalho ela ficará visível ... nas descrições acima referidas com código já não, estarão sempre invisíveis cada vez que abrir a pasta de trabalho

 

IMPORTANTE: no separador de modo programador deve seleccionar  Tools ( ferramentas) ; em seguida Propriedades de VBProject (abre nova janela) ; selecionar protecção, validar caixa de protecção e inserir password e confirmar password ... Isto para ninguém aceder ao modo programador sem introduzir password

 

:)  

 

Share this post


Link to post
Share on other sites
Nuno2020
4 horas atrás, Rhysand disse:

 

IMPORTANTE: no separador de modo programador deve seleccionar  Tools ( ferramentas) ; em seguida Propriedades de VBProject (abre nova janela) ; selecionar protecção, validar caixa de protecção e inserir password e confirmar password ... Isto para ninguém aceder ao modo programador sem introduzir password

 

boa tarde,

A minha questao é só esse ultimo paragrafo

Conforme expliquei desde o inicio, e pelo que percebi  essa era tambem a duvida de quem iniciou o topico, a proteçao com password nao funciona, o resto eu já tinha feito tudo.

A duvida é apenas essa, colocando password e gravando , quando volto a abrir o excel, o caminho para a pasta continua visivel na janela do VB sem precisar colocar a password (nao pede password sequer), conforme explicam aqui no final:

http://www.tomasvasquez.com.br/artigos/excel_planilhas.htm

 

 

 

Edited by Nuno2020

Share this post


Link to post
Share on other sites
Rhysand
18 horas atrás, Nuno2020 disse:

boa tarde,

A minha questao é só esse ultimo paragrafo

Conforme expliquei desde o inicio, e pelo que percebi  essa era tambem a duvida de quem iniciou o topico, a proteçao com password nao funciona, o resto eu já tinha feito tudo.

A duvida é apenas essa, colocando password e gravando , quando volto a abrir o excel, o caminho para a pasta continua visivel na janela do VB sem precisar colocar a password (nao pede password sequer), conforme explicam aqui no final:

http://www.tomasvasquez.com.br/artigos/excel_planilhas.htm

 

 

 

Boa tarde,

O VBA tem de ser marcado como fidedigno , caso contrário não irá funcionar e para além disso há  Objectos, funcionalidades,declarações ... entre outras situações no VBA que têm Referências correspondentes a cada situação e que também precisam de ser activadas.

Centro de fidedignidade:

https://support.office.com/pt-pt/article/ativar-ou-desativar-macros-em-ficheiros-do-office-12b036fd-d140-4e74-b45e-16fed1a7e5c6

 

Referências:

http://www.pauloacosta.com/2013/04/problema-no-excel-erro-de-compilao-impossvel-localizar-o-projeto-ou-a-biblioteca/

Confirme se tem as seguintes activas:

Visual Basic For Applications
Microsoft Excel 15.0 Object Library
OLE Automation
Microsoft Office 15.0 Object library
Microsoft Forms 2.0 Object Library
Microsoft Scripting Runtime
Microsoft VisualBasic for Apllications Extensibility 5.3

 

:) no Office 2013 está tudo a funcionar , espero que consiga resolver

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.