Cálculos com datas em formulário no Word.
Neste tutorial darei um exemplo de como realizar Cálculos com datas em formulário no Word através da execução de macro.
No exemplo deste tutorial vamos Calcular a Diferença em Dias Entre Duas Datas.
Primeiramente vamos criar uma tabela com duas linhas e três colunas (Data Inicial, Data Final e Número de Dias), como o da imagem abaixo:
Adicione três Campos de Texto, um em cada coluna, como mostrado na imagem abaixo:
O objetivo deste formulário é exibir o número de dias entre a Data Inicial e a Data Final, sendo que a Data Inicial será sempre a data atual, portanto, mais adiante, iremos alterar as propriedades deste controle para que sempre seja exibida a data atual.
O usuário informará apenas a Data Final no Campo de Texto da segunda coluna da tabela e também adicionaremos no evento Saída, deste controle, a macro que ainda iremos criar.
Nosso próximo passo agora é criar a macro que será responsável pela execução do cálculo, portanto, acione a Guia Desenvolvedor e no Grupo Código clique em Visual Basic ou através do atalho ALT + F11.
No ambiente de programação clique no menu Inserir e em seguida clique em Módulo.
Neste novo Módulo criaremos uma macro e daremos a ela o seguinte nome: calculandodata
Na Janela de Código, digite as seguintes linhas de código:
Sub calculandodata()
Dim nData As Date' Declara as variáveis.
Dim Texto3
nData = ActiveDocument.FormFields("Texto2").Result
ActiveDocument.FormFields("Texto3").Result = DateDiff("d", Now, nData)
End Sub
Veja como ficará na Janela de Código:
Feito isso, feche o Editor do Visual Basic For Applications (VBA) para retornar ao Microsoft Word.
Agora chegou a hora de alterar as propriedades dos controles, portanto selecione o controle Campo de Texto da primeira coluna da tabela e clique sobre ele com o botão direito do mouse e selecione Propriedades.
Em Opções do campo de formulário texto faça as seguintes alterações:
Tipo: Data atual
Formato da data: dd/MM/yyyy
Agora selecione o controle Campo de Texto da segunda coluna da tabela e clique sobre ele com o botão direito do mouse e selecione Propriedades.
Em Opções do campo de formulário texto faça as seguintes alterações:
Tipo: Data
Formato da data: dd/MM/yyyy
Saída: selecione a macro calculandodata
Selecione também a opção Calcular ao sair
Agora selecione o controle Campo de Texto da terceira coluna da tabela e clique sobre ele com o botão direito do mouse e selecione Propriedades.
Em Opções do campo de formulário texto faça as seguintes alterações:
Tipo: Número
Formato do número: 0
Agora é necessário proteger nosso formulário para que possamos utilizá-lo.
Na Guia Desenvolvedor, no Grupo Proteger clique em Proteger Documento.
Clique em Restringir Formatação e Edição
No lado direito da tela surgirão as opções de restrição. Em Restrições de edição selecione a opção “Permitir apenas este tipo de edição no documento:”, em seguida no menu DropDown selecione “Preenchendo Formulários”. Em seguida clique no botão Sim, Aplicar Proteção. Observe a imagem abaixo:
Digite uma senha para aplicar a proteção.
OBS: Proteger o formulário ativa os campos e permite que os usuários o completem. As outras áreas do formulário ficam protegidas de alterações, o que impossibilita que o usuário faça qualquer tipo de modificação.
Para desativar a proteção basta somente clicar no botão Parar Proteção e se você optou por colocar uma senha ela será requerida para desproteger.
Com o formulário protegido você deve navegar pelos campos usando a Tecla Tab.
Tab: avançar para o próximo campo
Shift + Tab: retornar ao campo anterior
Vamos fazer um teste:
Informe a Data final e pressione a tecla TAB.
O controle Campo de Texto da terceira coluna é preenchido automaticamente quando a tecla TAB é pressionada.
OBS: Para que um formulário com macros funcione é necessário que a execução de macro esteja habilitada.
Considerações Finais: para evitar que ocorram erros aconselho a adicionar uma rotina de Tratamento de erros ao código. Por exemplo, se o usuário pressionar a tecla TAB sem informar a Data Final gerará um erro em tempo de execução.
Abaixo o código usado neste exemplo com tratamento de erros:
Sub calculandodata()
On Error GoTo Trata-Erro
Dim nData As Date' Declara as variáveis
Dim Texto3
nData = ActiveDocument.FormFields("Texto2").Result
ActiveDocument.FormFields("Texto3").Result = DateDiff("d", Now, nData)
Trata-Erro: ' Em caso de erro o código seguinte é executado
Exit Sub 'Sai do procedimento
End Sub
Neste tutorial mostramos como calcular a diferença em dias entre duas datas, porém, é possível também calcular a diferença em meses ou anos, basta fazer uma pequena alteração no código.
Para calcular a diferença em mês(es):
ActiveDocument.FormFields("Texto3").Result = DateDiff("M", Now, nData)
Para calcular a diferença em ano(s):
ActiveDocument.FormFields("Texto3").Result = DateDiff("yyyy", Now, nData)
Veja Também:
Cálculos com Datas em Formulário no Word 2007 - Parte 2