在商业环境中,打印文档的多个副本并不罕见。有时,对副本编号是有益的。例如,第一个副本将具有(也许在页眉或页脚中)文本“ Copy 1”,第二个副本将具有“ Copy 2”,最多可包含多少副本。

当然,一种选择是打印文档的各个副本,然后在每次打印之间对副本编号进行编辑。这变得乏味,快速。您可能还希望利用顺序编号字段(如其他_WordTips_中所述),并使副本数等于您需要打印的数量。因此,如果您必须打印25份,则只需复制整个文档(包括顺序编号字段),移至文档末尾,然后再粘贴24次。但是,这使整个文档相当庞大,并且有更简单的方法来解决该问题。

解决此问题的最简单方法(缺少使用宏)可能是简单地使用Word的邮件合并功能。您将使用一个简单的数据源,其中包含要分配给每个副本的编号。然后,将合并字段放在文档中的适当位置,然后运行合并。每个副本将包含所需的副本编号。使用这种方法的额外好处是,您可以根据需要在合并中使用其他信息。例如,如果文档的每个副本都分配给一个特定的人,则只需在数据源中简单地添加另一个数据字段,其中包含要接收该副本的人的姓名。然后,您也可以在每个合并的文档中打印该人的姓名。

如果愿意,可以使用宏来打印编号的副本。

例如,下面的宏询问您要打印多少份,以及要使用的起始份数。 (如果您打印25份,然后有人要求您打印第二批10份,编号从26到35,这非常方便。)该宏还存储了会话之间的最后一份副本,因此将其用作默认值当您下次运行宏时。

Public Sub PrintNumberedCopies1()

Dim varItem As Variable     Dim bExists As Boolean     Dim lCopiesToPrint As Long     Dim lCounter As Long     Dim lCopyNumFrom As Long

' ensure our doc variable exists     bExists = False     For Each varItem In ActiveDocument.Variables         If varItem.Name = "CopyNum" Then             bExists = True             Exit For         End If     Next varItem

' initialize document variable if doesn't exist     If Not bExists Then         ActiveDocument.Variables.Add _             Name:="CopyNum", Value:=0     End If

' ask how many to print     lCopiesToPrint = InputBox( _         Prompt:="How many copies?", _         Title:="Print And Number Copies", _         Default:="1")



' ask where to start numbering     lCopyNumFrom = CLng(InputBox( _         Prompt:="Number at which to start numbering copies?", _         Title:="Print And Number Copies", _         Default:=CStr(ActiveDocument.Variables("CopyNum") + 1)))



' loop through the print-write-print cycle     For lCounter = 0 To lCopiesToPrint - 1         ' update the document variable         ActiveDocument.Variables("CopyNum") = _             lCopyNumFrom + lCounter         ' print this numbered copy         ActiveDocument.PrintOut Copies:=1     Next lCounter End Sub

为了使用此宏,您还需要执行其他两项操作。

首先,您需要在文档中指出您希望副本号出现的位置。在应该打印的位置,只需插入以下字段(请记住,通过按Ctrl + F9插入字段括号):

{ DOCVARIABLE "CopyNum" }

您需要做的第二件事是确保已配置Word,以便它在打印时更新字段。现在,当您运行宏时,系统将询问您要打印多少份以及要使用的起始编号。 document变量将更新,并打印文档的单个副本。这些步骤会重复执行您选择打印的次数。

不幸的是,此宏解决方案不能在Word的所有版本中使用。例如,如果将DOCVARIABLE字段放在Word 97文档的标题中,然后打印该文档,Word将立即崩溃。

如何解决这个问题?只需使用其他方法即可。 (如果没有灵活性,Word将一无所获。)以下宏可在所有现代版本的Word中使用。它是较早版本的一种变体,它依赖于使用自定义文档属性而不是文档变量。

Public Sub PrintNumberedCopies2()

Dim varItem As DocumentProperty     Dim bExists As Boolean     Dim lCopiesToPrint As Long     Dim lCounter As Long     Dim lCopyNumFrom As Long

' ensure our doc variable exists     bExists = False     For Each varItem In ActiveDocument.CustomDocumentProperties         If varItem.Name = "CopyNum" Then             bExists = True             Exit For         End If     Next varItem

' initialize document variable if doesn't exist     If Not bExists Then         ActiveDocument.CustomDocumentProperties.Add _             Name:="CopyNum", LinkToContent:=False, _             Type:=msoPropertyTypeNumber, Value:=0     End If

' ask how many to print     lCopiesToPrint = InputBox( _         Prompt:="How many copies?", _         Title:="Print And Number Copies", _         Default:="1")



' ask where to start numbering     lCopyNumFrom = CLng(InputBox( _         Prompt:="Number at which to start numbering copies?", _         Title:="Print And Number Copies", _         Default:=CStr(ActiveDocument.CustomDocumentProperties("CopyNum") + 1)))



' loop through the print-write-print cycle     For lCounter = 0 To lCopiesToPrint - 1         ' update the document variable         ActiveDocument.CustomDocumentProperties("CopyNum") = _             lCopyNumFrom + lCounter         ' print this numbered copy         ActiveDocument.PrintOut Copies:=1     Next lCounter End Sub

为了使用此宏,您还需要执行其他两项操作。

首先,您需要在文档中指出您希望副本号出现的位置。在应该打印的位置,只需插入以下字段(请记住,通过按Ctrl + F9插入字段括号):

{ DOCPROPERTY "CopyNum" }

首次插入该字段时,您可能会看到该字段返回的错误消息,例如“错误!未知的文档属性名称”。不用担心运行宏后,它将消失并由正确的副本号代替。

您需要做的第二件事是确保已配置Word,以便它在打印时更新字段。现在,当您运行宏时,系统将询问您要打印多少份以及要使用的起始编号。 document变量将更新,并打印文档的单个副本。这些步骤会重复执行您选择打印的次数。

注意:

如果您想知道如何使用此页面(或_WordTips_网站上的任何其他页面)中描述的宏,我准备了一个包含有用信息的特殊页面。

_WordTips_是您进行经济有效的Microsoft Word培训的来源。

(Microsoft Word是世界上最流行的文字处理软件。)本技巧(844)适用于Microsoft Word 97、2000、2002和2003。您可以为Word(Word 2007)的功能区界面找到此技巧的版本。和更高版本)在这里: