هنگامی که بر روی ابزار چاپ کلیک می کنید، Word به طور خودکار یک نسخه از سند شما را چاپ می کند. بدون توجه به تعداد کپی هایی که قبلاً برای چاپ در کادر محاوره ای چاپ انتخاب کرده اید، این کار را انجام می دهد. این یک رفتار خنده دار منحصر به فرد برای ابزار چاپ نیست. در واقع، هر بار که کادر محاوره ای چاپ را دوباره نمایش می دهید، باید متوجه شوید که تنظیم تعداد کپی ها همیشه به 1 بازنشانی می شود.
به نظر می رسد که Word همیشه از از دست دادن حافظه کوتاه مدت در این زمینه رنج می برد. تنظیم تعداد کپی ها به سادگی "دائم" نیست و باید هر بار که می خواهید چاپ کنید تنظیم شود. این می تواند آزاردهنده باشد، به خصوص اگر می خواهید همان تعداد نسخه را به طور ثابت چاپ کنید.
دو راه وجود دارد که می توان به یک راه حل نزدیک شد. ابتدا، می توانید با استفاده از چاپگر انتخابی فعلی و تعداد خاصی از کپی، یک ماکرو ایجاد کنید که چاپ کند. اگر به طور مداوم تعداد معینی از نسخه ها را چاپ می کنید، این یک رویکرد عالی است. به عنوان مثال، ماکرو زیر چهار نسخه از سند فعلی را چاپ می کند:
Sub PrintFour()
ActiveDocument.PrintOut Copies:=4
End Sub
اگر این ماکرو را به نوار ابزار دسترسی سریع یا به یک کلید میانبر اختصاص دهید، یک کلیک ساده یا ترکیب کلید تعداد مورد نظر را چاپ می کند.
راه حل دوم بیشتر درگیر است اما ممکن است در دراز مدت انعطاف پذیرتر باشد. این راه حل شامل استفاده از یک ویژگی سند سفارشی برای حفظ تعداد آخرین نسخههای چاپ شده بر اساس سند به سند است. این تنظیم به عنوان تعداد کپی برای چاپ استفاده می شود، بنابراین تعداد کپی ثابت برای هر سند ارائه می شود. دو ماکرو زیر باید استفاده شود:
Public Sub FilePrint()
Dim bExists As Boolean
Dim MyPrint As Dialog
" ensure our doc variable exists
bExists = False
For Each varItem In ActiveDocument.CustomDocumentProperties
If varItem.Name = "Copies" Then
bExists = True
Exit For
End If
Next varItem
" initialize document variable if doesn"t exist
If Not bExists Then
ActiveDocument.CustomDocumentProperties.Add _
Name:="Copies", LinkToContent:=False, _
Type:=msoPropertyTypeNumber, Value:=1
End If
Set MyPrint = Dialogs(wdDialogFilePrint)
With MyPrint
.NumCopies = ActiveDocument.CustomDocumentProperties("Copies")
.Show
End With
ActiveDocument.CustomDocumentProperties("Copies") = _
MyPrint.NumCopies
Set MyPrint = Nothing
End Sub
Public Sub FilePrintDefault()
Dim bExists As Boolean
" ensure our doc variable exists
bExists = False
For Each varItem In ActiveDocument.CustomDocumentProperties
If varItem.Name = "Copies" Then
bExists = True
Exit For
End If
Next varItem
" initialize document variable if doesn"t exist
If Not bExists Then
ActiveDocument.CustomDocumentProperties.Add _
Name:="Copies", LinkToContent:=False, _
Type:=msoPropertyTypeNumber, Value:=1
End If
ActiveDocument.PrintOut Copies:= _
CInt(ActiveDocument.CustomDocumentProperties("Copies"))
End Sub
این ماکروها دارای نام های ویژه FilePrint و FilePrintDefault هستند. اینها نامهایی هستند که به دستورات داخلی Word اختصاص داده میشوند که کادر محاورهای Print (FilePrint) را نمایش میدهند و سند فعال (FilePrintDefault) را با استفاده از ابزار Print در نوار ابزار چاپ میکنند. هنگامی که از این ماکروها استفاده می کنید، با نام های نشان داده شده، در اصل دستورات داخلی Word را جایگزین می کنید.
در مورد ماکرو FilePrint جدید، ویژگی های سند بررسی می شود تا ببینیم آیا یکی به نام Copies وجود دارد یا خیر. اگر وجود نداشته باشد، یک ویژگی سند با آن نام ایجاد می شود و مقدار 1 را تنظیم می کند. سپس کادر محاوره ای Print نمایش داده می شود و مقدار Number of Copies بر اساس ویژگی سند سفارشی تنظیم می شود. سپس شما به عنوان یک کاربر می توانید تنظیمات تعداد کپی ها را به دلخواه تغییر دهید. هنگامی که کادر محاوره ای بسته می شود (چه با چاپ یا نه)، ویژگی سند Copies به هر مقداری که تنظیم تعداد کپی ها بود به روز می شود.
از سوی دیگر، ماکرو FilePrintDefault فقط بررسی میکند که ویژگی سند Copies وجود داشته باشد و تعداد کپیهایی را برای چاپ بر اساس مقدار آن تنظیم میکند. اگر خاصیت وجود نداشته باشد، ایجاد می شود و به مقدار 1 تنظیم می شود.