VBA – Abrindo arquivos informando a senha

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