Таким образом, мое решение включало флаг в ActiveDocument.PrintOut
, который указывает копии Copies:=1
.Это вошло в макрос, который печатает документы и внутри DocumentBeforePrint
, который я использую Cancel = True
.
. Это позволяет пользователю выбирать любое число, которое он хочет в Word, и оно направляется на Cancel = True
, затемМакрос спрашивает «сколько копий вы хотите» и печатает количество копий X, увеличивая число каждый раз.Как-то раньше, даже Макрос брал количество копий, заданное в слове, и применял его в макросе, поэтому я получал дубликаты того же документа с серийным номером, который был не тем, что я хотел.
Я вижу пользователейпомещая одно и то же число в Word и в макрос MsgBox, но на самом деле они могут просто помещать что угодно в Word, и важен только макрос MsgBox.
Последние два фрагмента кода выглядят так:
Public WithEvents App As Word.Application
Private Sub App_DocumentBeforePrint(ByVal Doc As Document, Cancel As Boolean)
'Cancel = True = Don't bother printing whatever was selected in Word Print Page
Cancel = True
Call FilePrint
End Sub
Модуль:
Sub FilePrint()
Dim i As Long, j As Long
With ActiveDocument
j = CLng(InputBox("How many copies to print?", "Print Copies"))
For i = 1 To j
With .CustomDocumentProperties("Counter")
.Value = .Value + 1
End With
.Fields.Update
' Added Copies:=1 to force no Duplicates!
ActiveDocument.PrintOut Copies:=1
Next
.Save
End With
End Sub