2011-04-03 76 views
2

我知道有人收到單頁MS Word文檔。 一條標題包括RECEIPT #<number>。目前他查找最後打印的收據上的哪個號碼,並在打印出單個文件副本之前手動將收據號碼調整爲該號碼加1。每次打印文檔時如何增加表單域?

我認爲這可以通過使用一個表單字段來保持每次打印文檔時增加一個的數字。我沒有發現MS Word支持的任何東西,但我認爲可以使用VBA完成。幾年前,我不得不用這種語言進行編程,而且我從來沒有在Word和打印事件中使用任何表單域。

任何人都可以指出我在正確的方向與一些示例代碼,可以做到這一點?在調整數字後自動保存文件也是受歡迎的。

+0

如果您願意,可以在文檔「Receipt 04apr2011-183215」或數字代碼上加上時間戳。 – mpez0 2011-04-03 22:36:57

回答

2

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).ShowCancel = True來增加計數器的計數。)

我認爲值得一提的是,一旦代碼到位,雙擊文檔的表單字段(即將包含收據編號),併爲字段類型選擇「編號」,並輸入需要打印的第一個收據編號作爲「默認編號」。

enter image description here

一旦被輸入表單字段的默認設置,手動保存文件,然後關閉它。現在每次打開時,表單字段的內容都將被分配給變量,並且DocumentBeforePrint事件將在每次打印文檔時遞增字段。如果用戶需要重置字段(由於打印機卡紙或其他不可預見的事件),他應該雙擊字段,更改默認值,在對話框中單擊確定,保存文檔並關閉它(清除取出先前爲計數器變量分配的值)。和以前一樣,打開文檔將準備打印和遞增。希望這可以幫助。