MORE INFORMATION
Microsoft provides programming examples for illustration only,
without warranty either expressed or implied. This includes, but is not limited
to, the implied warranties of merchantability or fitness for a particular
purpose. This article assumes that you are familiar with the programming
language that is being demonstrated and with the tools that are used to create
and to debug procedures. Microsoft support engineers can help explain the
functionality of a particular procedure, but they will not modify these
examples to provide added functionality or construct procedures to meet your
specific requirements.
The following sample Visual Basic for Applications
macro must be named AutoNew, and it must be stored in a protected form template
(protect the template for Forms). If the macro is named AutoNew, the macro will
run whenever a new document is created based on the template. The protected
form template must contain a form field to contain the invoice number. In the
example, the formfield bookmark name is "InvoiceNumber." If you want to use a
different bookmark name for this form field you must change the bookmark name
in the macro example as well.
Sub AutoNew()
' If the active document does not contain
' a form field, exit this routine.
If ActiveDocument.FormFields.Count = 0 Then Exit Sub
' Create variables.
Dim sAppName As String
Dim sSection As String
Dim sKey As String
Dim sFieldName As String
Dim lRegValue As Long
Dim lFormValue As Long
Dim iDefault As Integer
sAppName = "Word 97"
sSection = "Invoices"
sKey = "Current Invoice Number"
' The default starting number.
iDefault = 1
' If the specified form field doesn't exist,
' an error will occur.
On Error GoTo errhandler
' Replace the following example Form Field bookmark name,
' "InvoiceNumber", with the name of your form field.
Set fField = ActiveDocument.FormFields("InvoiceNumber")
' Get stored registry value, if any.
lRegValue = GetSetting(sAppName, sSection, sKey, iDefault)
' If the result is zero, set to default value.
If lRegValue = 0 Then lRegValue = iDefault
' Set form field result to stored value.
fField.Result = CStr(lRegValue)
' Increment and update invoice number.
SaveSetting sAppName, sSection, sKey, lRegValue + 1
errhandler:
If Err <> 0 Then
MsgBox Err.Description
End If
End Sub
To Reset the Invoice Number
To reset the invoice number you can use the following sample
Visual Basic for Applications macro. The macro will detect if a new starting
invoice number has been entered into the form field set to contain the invoice
number. To reset the invoice number, type a new value into the form field that
contains the invoice number.
The following macro can be assigned to
the invoice number form field as an on-exit macro or to a toolbar button or
menu.
Sub ResetInvoiceNumber()
' If the active document does not contain
' a form field, exit this routine.
If ActiveDocument.FormFields.Count = 0 Then Exit Sub
' Create variables.
Dim sAppName As String
Dim sSection As String
Dim sKey As String
Dim lRegValue As Long
Dim lFormValue As Long
Dim iDefault As Integer
sAppName = "Word 97"
sSection = "Invoices"
sKey = "Current Invoice Number"
iDefault = 1
' If the specified form field doesn't exist,
' an error will occur.
On Error GoTo errhandler
' Replace the following Form Field bookmark name,
' "InvoiceNumber", with the name of your form field.
Set fField = ActiveDocument.FormFields("InvoiceNumber")
' Get stored registry value, if any.
lRegValue = GetSetting(sAppName, sSection, sKey, iDefault)
' If the result is zero, set to default value.
If lRegValue = 0 Then lRegValue = iDefault
' Get value from formfield. The value cannot be null.
If fField.Result <> "" Then
' If not Null or empty.
lFormValue = fField.Result
Else
' If null or empty, set to default value.
fField.Result = iDefault
lFormValue = iDefault
End If
' See if a new new starting invoice number was entered.
If lFormValue <> lRegValue Then
' If so, make the registery value equal the form value
' and store the new value.
SaveSetting sAppName, sSection, sKey, lFormValue + 1
End If
errhandler:
If Err <> 0 Then
MsgBox Err.Description
End If
End Sub
For more information about adding a command to a menu, click Contents
And Index on the Help menu (or on the Balloon Help menu if you are using a
version of the Macintosh operating system earlier than 8.0), click the Index
button in Word Help, type the following text
and then click Show Topics. Select the "Add a command or other
item to a menu" topic, and click Go To. If you are unable to find the
information you need, ask the Office Assistant.
For additional
information, please see the following article in the Microsoft Knowledge Base:
181058 OFF98: How to Run Sample Code from Knowledge Base Articles