Esta foi uma pergunta feita num fórum e como é uma informação interessante, resolvi postar aqui.
Muita gente, aliás, todo mundo que trabalha com planilhas no dia a dia costuma proteger os arquivos mais críticos com senha de abertura do arquivo.
Até aí a coisa é simples meso para usuários básicos. Mas quando se quer automatizar este tipo de arquivo com VBA, por exemplo, abrindo-o através de outro arquivo, fica ou pouco complicado. Mas nem tanto.
Se reparar bem, ao ativar no próprio VBA o método Open da coleção Workbooks, será possível ver que um dos parâmetros da função é a senha de abertura do arquivo. O exemplo abaixo abre um arquivo de Excel via VBA:
1 2 3 | Sub AbreArquivo() Call Workbooks.Open(FileName:="C:\arquivo.xls") End Sub |
Porém, caso o arquivo contenha senha de abertura, bastaria adicionar o seguinte argumento:
1 2 3 4 | Sub AbreArquivoComSenha() Call Workbooks.Open(FileName:="C:\arquivo.xls", _ Password:="1234") End Sub |
Para informação, o método devolve um objeto do tipo Workbook que pode ser manipulado depois de aberto.
Isso resolve o problema. Claro, é preciso tomar os devidos cuidados para proteger o projeto VBA e não expor indevidamente a senha para o usuário. Recomenda-se também adicionar um tratamento de erros para inibir ainda mais as mensagens.
Em tempo, a mesma informação é válida para o Word/VBA, porém a coleção utilizada é a Documents e o nome do parâmetro é PasswordDocument. O código abaixo mostra um exemplo da aplicação.
1 2 3 4 | Sub AbreDocumentoComSenha() Call Documents.Open(FileName:="C:\Documento.doc", _ PasswordDocument:="1234") End Sub |
Abraços
Tomás
Olá, Tomás:
Acabo de conhecer este site, encontrado em uma busca sobre o C905 da Sony-Ericsson. Aproveitei para ver outras matérias e cheguei até esta sobre VBA. Sei que não é uma maneira muito boa de começar, mas gostaria que você me indicasse um bom livro sobre VBA. Uso muitas macros feitas por mim com o ridículo conhecimento que tenho de VB6 e de livro sobre essa linguagem, mas não tenho nada específico sobre VBA. Agradeço antecipadamente a sua ajuda. Um abraço.
Olá Francisco,
É um pouco arriscado aconselhar algo desse tipo pois vai muito do gosto. De qualquer forma, gosto muito desses dois:
http://livrosweb.com/book.php/id/5331
http://www.livrariasaraiva.com.br/produto/produto.dll/detalhe?pro_id=162203&PAC_ID=6297
Abraços e sucesso
Tomás
Valeu, Tomás!
Obrigado pela atenção e parabéns pelo blog. Muito bom.
Tomás, muito obrigado pela dica.
Você saberia como incluir duas passwords, uma para abrir o arquivo e outra para modificá-lo?
Valeu
Luiz,
O método Open tem o parâmetro WriteResPassword que é a senha de gravação. Informe-o da mesma foram que o Password.
Mais dúvidas, consulte nosso fórum:
http://www.tomasvasquez.com.br/forum
Abraços
Tomás
Tomás,
Gostaria de criar uma caixa com senha na abertura do Excel.
Imagine que eu tenho a primeira sheet contendo um menu com KPI’s/indicadores e essa planilha será enviada para diversas pessoas, porém tenho que distribuir diversas senhas e quando a pessoa colocar a senha dela aparecerá os gráficos apenas com as informações dela.
Vc pode me ajudar?
Abraços,
Rafael
Rafael,
Como a quantidade de dúvidas que são enviadas é grande, abri um fórum para melhor atender a estas solicitações. O endereço do fórum é:
http://www.tomasvasquez.com.br/forum
Além disso, a probabilidade de alguém ter tido o mesmo problema e de ele estar resolvido é bem grande. Nos vemos lá!
Abraços
Tomás