Word允許我們控制DocumentBeforePrint事件,我認爲這會爲您提供所需的結果。文字型窗體域已添加到文檔本身後,該代碼添加到的ThisDocument VBA聲明部分:
Option Explicit
Private WithEvents app As Application
然後編輯Document_Open()子閱讀:
Private Sub Document_Open()
Set app = Application
ActiveDocument.Variables("ReceiptNumber").Value = ActiveDocument.FormFields(1).Result
End Sub
最後,創建在DocumentBeforePrint子用下面的代碼:
Private Sub app_DocumentBeforePrint(ByVal Doc As Document, Cancel As Boolean)
Dialogs(wdDialogFilePrint).Show
With ActiveDocument
.Variables("ReceiptNumber").Value = .Variables("ReceiptNumber").Value + 1
.FormFields(1).Result = .Variables("ReceiptNumber").Value
.Save
End With
Cancel = True
End Sub
此代碼將啓動打印對話框,並打印後,增加計數器和保存文檔。 Cancel = True
行取消標準的打印對話框,以便代碼不嘗試打印文檔兩次。 (也可以通過刪除Dialogs(wdDialogFilePrint).Show
和Cancel = True
來增加計數器的計數。)
我認爲值得一提的是,一旦代碼到位,雙擊文檔的表單字段(即將包含收據編號),併爲字段類型選擇「編號」,並輸入需要打印的第一個收據編號作爲「默認編號」。
一旦被輸入表單字段的默認設置,手動保存文件,然後關閉它。現在每次打開時,表單字段的內容都將被分配給變量,並且DocumentBeforePrint事件將在每次打印文檔時遞增字段。如果用戶需要重置字段(由於打印機卡紙或其他不可預見的事件),他應該雙擊字段,更改默認值,在對話框中單擊確定,保存文檔並關閉它(清除取出先前爲計數器變量分配的值)。和以前一樣,打開文檔將準備打印和遞增。希望這可以幫助。
如果您願意,可以在文檔「Receipt 04apr2011-183215」或數字代碼上加上時間戳。 – mpez0 2011-04-03 22:36:57