[MailMerge] Tutorial 4:: Criando mala direta com campos calculados

Este tutorial faz parte da sequência no curso de utilização do Mail Merge do Word. Para esta seção, precisaremos tanto do Excel quanto do Word utilizado no tutorial anterior. Nele vamos incluir duas colunas: Quantidade de produtos e valor unitário.

A ideia é simular a quantidade de produtos que um cliente comprou, qual o valor unitário de cada produto e fazer com que o documento calcule o valor total de cada cliente.

Feche o modelo de documento do Word e abra o arquivo do Excel com a fonte de dados. O primeiro passo é incluir as duas colunas no arquivo de fonte de dados:

 

Agora, adicione as novas colunas no modelo do Word:

Note que a coluna Total está vazia e as tags de NextRecord ainda não foram adicionadas. Faremos isso na sequência.

Aperte Ctrl + F9 para inserir uma nova expressão do Mail Merge:

Dentro dela, escreva o seguinte conteudo: = quantidade_comprada * valor_unitario. O resultado ficará parecido com este:

Copie esta expressão e cole em todas as linhas da tabela.

Atenção: Pode ser que o Word mostre a mensagem “Undefined Bookmark! …”. Não se preocupe com ela.

Por último, adicione a tag NextRecord ao final de cada linha de registro:

 

Clique em Preview Results:

Existe um porém com este tipo de abordagem: Quando sobram linhas e não existem mais registros….

 

Como sobraram linhas na tabela, mas o Word não tem mais linhas para processar, ele vai refazendo o cálculo com os últimos dados que ele tem. Neste exemplo, ele preenche o total das últimas linhas com o valor 4416,5 (22 * 200,75).

Para evitar este problema, podemos utilizar formulas condicionais na coluna. Para quem está acostumado a trabalhar com Excel, a sintaxe é bem parecida, quem não está.

O que precisará ser feito:

  • Uma verificação condicional (IF) checando se o campo quantidade_comprada é maior que zero;
  • Uma verificação condicional (IF) checando se o campo valor_unitario é maior que zero;
  • Se as duas condições acima forem atendidas, faz o calculo e exibe o valor total, se não, deixa o campo vazio.

 

Para fazer isso, você deve saber:

  • Fazer referência a um campo da tabela: { MERGEFIELD nome_do_campo };
  • Sintaxe da validação condicional (IF): { IF <condicional> “<resultado se verdadeiro>” “<resultado se falso>” }
  • As definições de formulas e referencias no MailMerge ficam entre {}, mas não são as que você digita pelo teclado, elas são especiais e só funcionam se inseridas pelo atalho Ctrl+F9

 

Para facilitar o entendimento, vamos fazer por partes…

  • Verificando se a quantidade_comprada é maior que zero: { IF { MERGEFIELD quantidade_comprada } > 0 “sim, é maior que zero” “não, é menor que ou igual a zero”};
  • Verificando se o valor_unitario é maior que zero: { IF { MERGEFIELD valor_unitario } > 0 “sim, é maior que zero” “não, é menor que ou igual a zero”};
  • Agora queremos verificar se ambos valores são maiores que zero:
    { IF { MERGEFIELD quantidade_comprada } > 0 “{ IF { MERGEFIELD valor_unitario } > 0 “sim, ambos valores são maiores que zero.” “não, é menor que ou igual a zero”}” “não, é menor que ou igual a zero”}
  • Na formula acima, se o valor quantidade_comprada for maior que zero, verificamos também se o valor_unitario é acima de zero. Agora precisamos incluir a formula que faz a conta quantidade comprada * valor_unitario:
    { IF { MERGEFIELD quantidade_comprada } > 0 “{ IF { MERGEFIELD valor_unitario } > 0 “{ = { MERGEFIELD quantidade_comprada } * { MERGEFIELD valor_unitario } }” “não, é menor que ou igual a zero”}” “não, é menor que ou igual a zero”}
  • O que restou fazer agora é ‘limpar’ esta formula, ou seja, remove os textos informando que determinados valores não são acima de zero e deixar apenas “”.
    { IF { MERGEFIELD quantidade_comprada } > 0 “{ IF { MERGEFIELD valor_unitario } > 0 “{ = { MERGEFIELD quantidade_comprada } * { MERGEFIELD valor_unitario }  }” “” }” “”}
  • Atenção: Copiar e colar a formula não irá funcionar. Lembre-se que as {} funcionam nas formulas apenas se forem inseridas utilizando Ctrl+F9.

Aplique esta formula a todas as linhas da tabela e clique em Preview Results:

Agora o Word irá exibir a totalização dos valores apenas quando os campos quantidade_comprada e valor_unitario forem maiores que zero.

Este modo de trabalhar é comum, mas existe outra forma mais fácil: Deixar toda lógica de cálculo na fonte de dados. No próximo tutorial, mostraremos como fazer isso.

 

No próximo tutorial, vamos mostrar como realizar esta mesma operação de uma forma mais simples e convencional.

The following two tabs change content below.
Arquiteto de Software e Desenvolvedor Backend (quase Fullstack), geralmente trabalho com C#, PowerShell, Python, Golang, bash e Unity (esse é mais por hobby). Estou sempre buscando algo novo para aprender, adicionando novas ferramentas ao meu cinto de utilidades.
Posted in Geral, Software and tagged , , , , , , , , , .