Do Básico ao Avançado
Home  Tutoriais  Artigos  Contato

Macro para salvar o documento e aplicar senha de proteção

Neste tutorial criaremos uma macro que irá salvar o documento e aplicar senha de proteção ao mesmo. O documento será salvo no formato .docx e automaticamente será protegido com senha.

No exemplo que daremos aqui um novo documento será salvo com o Nome que foi informado na tabela de cadastro seguido da data e hora atuais e ao mesmo tempo será aplicada uma senha de proteção.

No exemplo será utilizado um Controle Activex para acionar a macro, porém, se você quiser, poderá adicionar uma nova guia e nesta nova guia adicionar o comando à faixa de opções ou então adicionar a macro à Barra de Ferramentas de Acesso Rápido.

A imagem abaixo mostra um documento de cadastro que contém um Botão de Comando (Controle ActiveX) ao qual vamos adicionar um código para que quando receber a ação de um clique salvar uma cópia do documento no formato .docx protegido por senha.

Tabela de Cadastro

Salvar o documento na pasta padrão de armazenamentos de arquivos e proteger com senha.

No exemplo a seguir criaremos uma macro para salvar o documento e aplicar ao mesmo uma senha de proteção.

A Senha de proteção será o número do RG informado na tabela de cadastro. O documento será salvo na mesma pasta onde se encontra o arquivo original.

1- Clique na guia Desenvolvedor e no grupo Controles clique em Modo de Design para ativar o modo de design.

Ativar Modo de Design

2- Selecione o Controle Activex (Botão de Comando) e clique com o botão direito do mouse e depois clique em Exibir Código.

Exibir Código

3- No evento Click do botão de comando adicione o código abaixo:

Private Sub CommandButton1_Click()
'Declara as variáveis
Dim vDataHora As String
Dim vNomeDoc As String
Dim vSenha As String

On Error GoTo CommandButton1_Click_Err

'Altera as propriedades Width e Height do botão de comando para que não apareça no novo arquivo
CommandButton1.Width = "1"
CommandButton1.Height = "1"

'A variável vNome Doc é igual ao texto digitado na primeira célula da segunda coluna da primeira linha da tabela 1
vNomeDoc = ActiveDocument.Tables(1).Cell(1, 2).Range.Text

'Retira o caracter especial de marca fim de célula para não gerar erro de permisão na hora de salvar.
vNomeDoc = Mid(vNomeDoc, 1, Len(vNomeDoc) - 2)

'Dependendo da versão do Office use o código abaixo (não esqueça de tirar o apostrofo)
'vNomeDoc = Mid(vNomeDoc, 1, Len(vNomeDoc) - 1)

'Exibe a data e hora atual do sistema
vDataHora = Format(Now, "dd-mm-yyyy hh-mm")

'A variável vSenha é igual ao conteúdo da segunda célula da quarta linha da tabela 1
vSenha = ActiveDocument.Tables(1).Cell(4, 2).Range.Text

'Retira o caracter especial de marca fim de célula para não gerar erro de permissão na hora de salvar.
vSenha = Mid(vSenha, 1, Len(vSenha) - 2)

'Usamos a propriedade Salvar Como para salvar o documento com o nome e data e hora atual e protege o documento gerado com senha
ActiveDocument.SaveAs2 FileName:= _
vNomeDoc & " " & vDataHora, FileFormat:= _
wdFormatXMLDocumentMacroEnabled, LockComments:=False, Password:=vSenha, _
AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, _
EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData _
:=False, SaveAsAOCELetter:=False, CompatibilityMode:=15

'Fecha o Word
With ActiveDocument
.Close
End With

'Em caso de erro
CommandButton1_Click_Fim:
Exit Sub
CommandButton1_Click_Err:
MsgBox "Erro n." & Err.Number & " - " & Err.Description
Resume CommandButton1_Click_Fim
End Sub

Deverá ficar como na imagem abaixo:

Macro para salvar com senha

Observe que no código acima alteramos as propriedades Width e Height do Controle ActiveX diminuindo os valores para o mínimo possível. Isso fará com que o botão não apareça no novo arquivo.

'Altera as propriedades Width e Height do botão de comando para que não apareça no novo arquivo.
CommandButton1.Width = "1"
CommandButton1.Height = "1"

Note também que depois que o documento é salvo o Word é fechado. Devemos fazer com que as propriedades Width e Height do Controle Activex voltem ao seu tamanho original quando o arquivo for aberto novamente para efetuar um novo cadastro. Para isso usaremos o evento Open do documento.

Abra o documento de Cadastro novamente e no ambiente do Editor do Visual Basic clique em ThisDocument.

This Document

Na janela de código em Procedimento selecione o evento Open.

Evento Open do Objeto

No evento Open do Objeto adicione o seguinte Código:

'Retorna os valores originais das propriedades width e Height do botão de comando
CommandButton1.Width = "107,25"
CommandButton1.Height = "24"

Deverá ficar como na imagem abaixo:

Document Open

4- Feche o Editor do Visual Basic para voltar ao Word clicando em Arquivo e depois em Fechar e voltar para Microsoft Word.

Fechar o Editor do Visual Basic

5- Clique no botão de comando.

Tabela de Cadastro

6- Vá até o local onde o documento foi salvo e dê dois cliques sobre ele para abri-lo.

Local onde o arquivo foi salvo

7- Será exibida uma caixa de mensagem solicitando a senha para abrir o documento.

informar senha

8- Informe a senha que no exemplo deste tutorial será sempre o número do RG informado no cadastro e clique no botão OK.

Senha de Proteção

Consideração Final:

No exemplo deste tutorial a senha de proteção pega o valor que foi digitado na célula da tabela que corresponde ao RG, porém, é possível utilizar um outro dado da tabela, neste caso você terá que definir a variável vSenha a qual célula da tabela ela corresponde, por exemplo:

vSenha = ActiveDocument.Tables(1).Cell(4, 3).Range.Text

Neste caso a senha passaria ser o número do CPF digitado na célula que corresponde a 4ª linha e 3ª coluna da tabela.

É possível aplicar uma senha fixa, ou seja, uma senha igual para todos os documentos, para isso basta excluir as seguintes linhas de código:

Dim vSenha As String

vSenha = ActiveDocument.Tables(1).Cell(4, 2).Range.Text
vSenha = Mid(vSenha, 1, Len(vSenha) - 2)

E alterar o valor das propriedades Password e WritePassword, por exemplo:

ActiveDocument.SaveAs2 FileName:= _
vNomeDoc & " " & vDataHora, FileFormat:= _
wdFormatXMLDocumentMacroEnabled, LockComments:=False, Password:= "suasenhaaqui", _
AddToRecentFiles:=True, WritePassword:="suasenhaaqui", ReadOnlyRecommended:=False,_
EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData _
:=False, SaveAsAOCELetter:=False,CompatibilityMode:=15

Caso queira que o documento seja salvo como somente leitura altere o seguinte trecho de código:

ReadOnlyRecommended:=False
Por
ReadOnlyRecommended:=True

As linhas de textos na cor verde são comentários adicionados para facilitar a compreensão das rotinas do código.

Faça o download do exemplo usado neste tutorial: Baixar Arquivo




Formação Pacote Office



Word VBA


Política de Privacidade  |   © 2013 Tutoriais Word - Todos os direitos reservados