В Word нет возможности сделать поля слияния пустыми. Есть только Alt+F9, но это все еще оставляет вас с «Fieldname»
вместо пробелов.
Так что вам нужно сделать это с помощью макроса. Вы можете использовать макрос ниже. Если вы не сохраните документ после выполнения, вы можете вернуться к сохраненному файлу (с полями слияния) после печати. Конечно, вы также можете изменить этот макрос, чтобы создать файл копии, выполнить этот код, распечатать и закрыть копию (вместе с одним макросом). Вы можете изменить ______
на пробел, если вы хотите, чтобы вместо поля подчеркивания на месте для заполнения формы вручную использовались настоящие пробелы.
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
Редактировать:
Как вы и просили здесь пример, где исходный файл сначала сохраняется, затем "добавляется" в новый документ, поля слияния удаляются, документ печатается и снова закрывается. (все сразу, с некоторыми комментариями)
Если вы уверены, что документ не был изменен, вы можете пропустить .Save
-линии. Но затем, если вы внесли изменения без сохранения, ваша распечатанная копия будет сохранена, а не текущий файл.
Прошло много времени с тех пор, как я закодировал в VBA, но я думаю, что это работает;)
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