Você precisa proteger partes de um documento do Word enquanto deixa outras seções editáveis para usuários ou grupos específicos. A proteção padrão do Word se aplica ao documento inteiro e não permite controle detalhado sobre seções individuais. Este artigo explica como usar o Visual Basic for Applications (VBA) para aplicar proteção específica por seção que restringe a edição em algumas seções enquanto permite alterações em outras. Você aprenderá a estrutura do código VBA, como definir senhas por seção e como atribuir permissões de edição a usuários específicos.
Principais Conclusões: Proteção de Documento Específica por Seção via VBA
- Ferramentas > Macro > Editor do Visual Basic (Alt+F11): Abra o editor VBA para escrever e executar macros de proteção.
- ActiveDocument.Sections(index).ProtectedForForms = True: Bloqueie uma seção específica para que apenas campos de formulário possam ser editados.
- ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True, Password:=”senha”: Aplique restrições de edição protegidas por senha ao documento inteiro, preservando as configurações de campos de formulário por seção.
- ActiveDocument.Sections(index).Range.Editors.Add Editor:=”nome de usuário”: Conceda permissões de edição a usuários específicos para uma determinada seção.
Como Funciona a Proteção Específica por Seção no Word
A proteção de documento integrada do Word (Revisão > Restringir Edição) se aplica ao documento inteiro. Você pode optar por permitir apenas comentários, alterações controladas ou preenchimento de formulários. No entanto, esse método não permite bloquear a Seção 1 enquanto deixa a Seção 2 totalmente editável. O VBA oferece uma solução alternativa combinando a proteção de campos de formulário com permissões por seção.
O conceito central usa a propriedade ProtectedForForms de um objeto Section. Quando definida como True, essa seção se comporta como se contivesse apenas campos de formulário — nenhum outro conteúdo pode ser editado. Ao definir essa propriedade como False para as seções que você deseja que permaneçam editáveis, você cria um documento com proteção mista. Em seguida, você chama o método Protect no objeto Document com wdAllowOnlyFormFields para aplicar as configurações por seção.
Pré-requisitos
Antes de escrever o código VBA, verifique o seguinte:
- Você tem um documento do Word dividido em seções usando quebras de seção (Layout > Quebras > Próxima Página, Contínua, etc.).
- Você conhece os números de índice das seções que deseja proteger. A Seção 1 é a primeira seção do documento.
- Você tem o editor VBA habilitado. Vá em Arquivo > Opções > Personalizar Faixa de Opções e marque a guia Desenvolvedor. Em seguida, clique em Desenvolvedor > Visual Basic.
- Se você planeja atribuir permissões a usuários específicos, esses usuários devem ter contas Microsoft ou fazer parte da mesma organização usando o Information Rights Management (IRM).
Passos para Aplicar Proteção Específica por Seção Usando VBA
Siga estes passos para criar uma macro que bloqueia a Seção 1 e a Seção 3 enquanto deixa a Seção 2 editável. Ajuste os índices das seções para corresponder ao seu documento.
- Abra o Editor VBA
Pressione Alt+F11 para abrir o editor Visual Basic for Applications. No Explorador de Projetos, localize seu documento (por exemplo, Projeto (Documento1)). - Insira um novo módulo
Clique em Inserir > Módulo para criar um módulo de código em branco. - Escreva a macro de proteção
Cole o seguinte código no módulo:Sub ProtectSections()
Dim doc As Document
Set doc = ActiveDocument' Desproteja o documento primeiro se já estiver protegido
If doc.ProtectionType <> wdNoProtection Then
doc.Unprotect Password:=""
End If' Defina ProtectedForForms para seções específicas
' Seção 1: protegida
doc.Sections(1).ProtectedForForms = True
' Seção 2: editável
doc.Sections(2).ProtectedForForms = False
' Seção 3: protegida
doc.Sections(3).ProtectedForForms = True' Aplique proteção em nível de documento para forçar edição apenas em campos de formulário
doc.Protect Type:=wdAllowOnlyFormFields, NoReset:=True, Password:="MinhaSenha123"MsgBox "Proteção aplicada. Seções 1 e 3 estão bloqueadas; Seção 2 está editável."
End Sub - Execute a macro
Pressione F5 enquanto o cursor estiver dentro da macro, ou vá em Executar > Executar Sub/UserForm. Uma caixa de mensagem confirma que a proteção foi aplicada. - Teste a proteção
Tente editar texto na Seção 1 ou Seção 3. O Word deve impedir alterações. Mude para a Seção 2 e verifique se você pode editar livremente. Se o documento estiver protegido por senha, você deve inserir a senha para desprotegê-lo posteriormente.
Atribuindo Permissões a Usuários Específicos
Para permitir que apenas determinados usuários editem uma seção enquanto a mantém bloqueada para outros, adicione o seguinte código dentro da macro após definir ProtectedForForms, mas antes de chamar doc.Protect.
- Adicione um usuário à coleção Editors de uma seção
Use o métodoEditors.Addcom o e-mail ou nome de usuário:doc.Sections(2).Range.Editors.Add Editor:="usuario@exemplo.com"
Isso concede permissão de edição a esse usuário para a Seção 2, mesmo quando o documento está protegido. - Remova todos os editores de uma seção protegida
Para garantir que ninguém além do proprietário possa editar uma seção protegida, limpe a coleção Editors:doc.Sections(1).Range.Editors.DeleteAll - Aplique proteção com permissões de usuário
Após definir os editores, chamedoc.Protect Type:=wdAllowOnlyFormFields, NoReset:=True, Password:="MinhaSenha123". Os usuários adicionados como editores podem modificar o conteúdo em suas seções designadas.
Problemas Comuns ao Usar VBA para Proteção de Seções
ProtectedForForms Não Bloqueia a Seção
Se uma seção permanecer editável após definir ProtectedForForms = True, provavelmente você esqueceu de chamar doc.Protect no documento. A propriedade ProtectedForForms só entra em vigor quando o documento está protegido com wdAllowOnlyFormFields. Sempre inclua a linha doc.Protect após definir as propriedades da seção.
A Macro é Executada, mas a Proteção Não é Aplicada Após Fechar e Reabrir
As configurações de proteção do documento são salvas com o arquivo. Ao reabrir o documento, a proteção permanece ativa. No entanto, as configurações de ProtectedForForms por seção também são preservadas. Para verificar, abra o documento, vá em Revisão > Restringir Edição e verifique se “Preenchimento de formulários” está selecionado. Se o painel mostrar “Sem proteção”, execute a macro novamente. Considere adicionar uma macro AutoOpen para reaplicar a proteção automaticamente.
Erro de Permissão ao Adicionar Editores
O método Editors.Add exige que o documento use Information Rights Management (IRM) ou que o usuário seja autenticado por meio de uma conta Microsoft. Se você receber um erro de tempo de execução, certifique-se de que o documento não esteja já protegido com um tipo diferente. Desproteja o documento primeiro, depois adicione os editores e, finalmente, reaplique a proteção.
| Item | Restrição de Edição Padrão do Word | Proteção Específica por Seção via VBA |
|---|---|---|
| Escopo | Documento inteiro | Seções individuais |
| Permissões de usuário | Não suportado por seção | Suportado via coleção Editors |
| Senha | Uma senha para o documento inteiro | Uma senha para o documento inteiro, mas as seções se comportam de forma diferente |
| Edição permitida | Apenas comentários, alterações controladas ou campos de formulário | Edição completa em seções desprotegidas; apenas campos de formulário em seções protegidas |
| Requer VBA | Não | Sim, para definir a configuração inicial |
Agora você pode aplicar proteção de documento específica por seção no Word usando VBA. Comece identificando as seções em seu documento e escrevendo uma macro que define ProtectedForForms para cada seção. Lembre-se de chamar doc.Protect com wdAllowOnlyFormFields para aplicar as configurações. Para cenários avançados, atribua editores a seções específicas usando o método Editors.Add. Para automatizar a proteção toda vez que o documento for aberto, coloque a macro no módulo ThisDocument e use o evento Document_Open.