Ocultar campos de mala direta no Microsoft Word 2010

1

Eu tenho um documento cheio de campos de mesclagem que são usados para exibir informações de uma planilha. Às vezes, queremos que esses dados sejam preenchidos manualmente, por isso, precisamos imprimir o documento sem esses campos.

Existe alguma maneira de esconder todos eles para que eu possa imprimir como eles estão vazio ?

    
por vmassuchetto 13.11.2013 / 22:10

1 resposta

1

Não há nenhuma opção para tornar campos de mesclagem em branco no Word. Existe apenas Alt + F9 , mas isso ainda deixa você com «Fieldname» ao invés de espaços em branco.

Então você precisa fazer isso com uma macro. Você pode usar a macro abaixo. Se você não salvar o documento após a execução, poderá reverter para o arquivo salvo (com campos de mesclagem) após a impressão. Claro que você também pode alterar essa macro para criar um arquivo de cópia, executar este código, imprimir e fechar a cópia (tudo com uma macro). Você pode alterar o ______ para um espaço se desejar espaços em branco reais em vez de caracteres sublinhados no local para preencher o formulário manualmente.

Sub Demo()
Dim oFld As Field
For Each oFld In ActiveDocument.Fields
  With oFld
    If .Type = wdFieldMergeField Then
      .Code.Text = "QUOTE " & Chr(34) & "______" & Chr(34)
      .Update
      .Unlink
    End If
  End With
Next
End Sub

Editar:

Como você solicitou aqui um exemplo em que o arquivo original é salvo pela primeira vez, "adicionado" a um novo documento, campos de mesclagem excluídos, documento impresso e fechado novamente. (tudo de uma vez, com alguns comentários)
Se você tiver certeza de que o documento não foi alterado, pule a .Save -line. Mas se você fizer alterações sem salvar, sua cópia impressa será do arquivo salvo, não do seu arquivo atual.

Já faz um tempo desde que eu codifiquei em VBA, mas acho que está funcionando;)

Sub PrintCopyWithoutMergeFields()
  Dim oFld As Field

  ' save the original, needs to be done to add it as copy
  ActiveDocument.Save

  ' copy the original to a new document
  Application.Documents.Add ActiveDocument.FullName

  ' loop through all the fields and delete mergefields
  For Each oFld In ActiveDocument.Fields
    With oFld
      If .Type = wdFieldMergeField Then
        .Code.Text = "QUOTE " & Chr(34) & "______" & Chr(34)
        .Update
        .Unlink
      End If
    End With
  Next

  ' print the copy with the print-dialog
  Dialogs(wdDialogFilePrint).Show

  ' if you don't want the print-dialog, use this for the default printer
  ' Application.PrintOut

  ' close the copy without asking to save
  ActiveDocument.Close False

End Sub
    
por 13.11.2013 / 23:03