The following is a simple example of a Microsoft Word
macro that copies the currently selected text to the clipboard,
opens a DDE link to B-Coder, generates the bar code and finally
pastes the bar code into the document replacing the selected
text.
Note: B-Coder must be running when the following macro is
run from within Word.
| |
Sub MAIN()
' Copy the currently selected text to the clipboard
Selection.Copy
' In Word 6.0 use the following instead of Selection.Copy:
' EditCopy
' Initiate DDE link with B-Coder
Chan = DDEInitiate("B-Coder", "System")
' Create the bar code using data in the clipboard
DDEExecute Chan, "[Paste/Build/Copy]"
DDETerminate Chan ' Terminate the DDE link
' Paste the bar code into the Word document
Selection.PasteSpecial DataType:=wdPasteMetafilePicture, Placement:=wdInLine
' In Word 6.0 use the following instead of the above
' EditPaste
End Sub
|
The following macro pops up a dialog box asking for input of a bar code message.
After the user enters a bar code message, the macro launches B-Coder, sends
it the bar code message entered by the user, generates the bar code, closes
B-Coder and finally pastes the bar code from the clipboard to the open document
in the Microsoft Word window.
| |
Sub MAIN()
' get bar message
Msg$ = InputBox$("Enter A One Line Bar Code Message", _
"Bar Code")
If Len(Msg$) Then
' Run B-Coder Minimized
Shell "C:\B-CODER3\B-CODER.EXE", 6
' Note: make sure that the path for B-Coder
'is correct in the above command
' Initiate link with B-Coder
Chan = DDEInitiate("B-Coder", "System")
' Turn off printer & message warnings
DDEExecute Chan, "[PrintWarnings=off]"
DDEExecute Chan, "[MessageWarnings=off]"
'Generate the bar code
DDEExecute Chan, "[Barcode=" + Msg$ + "]"
' Tell B-Coder to quit
DDEExecute Chan, "[APPEXIT]"
' Paste the bar code into the Word document
Selection.PasteSpecial DataType:=wdPasteMetafilePicture, _
Placement:=wdInLine
'In Word 6.0 use the following instead of the line above:
'EditPaste
End If
End Sub
|
Note: B-Coder can be forced to load a specific
configuration file when it is launched by specifying a configuration
file name on the command line used to activate it. For example,
you could first create a B-Coder configuration file that
sets up B-Coder to use a specific bar code symbology and/or
any other parameters. You could then launch B-Coder with
the name of your configuration file on the command line so
that it would be already configured for your particular application
when it is launched. Suppose you wanted to modify the above
macro so that it automatically starts up pre-configured to
use the PostNET bar code symbology. You could create a configuration
file for B-Coder with the PostNET symbology selected and
then save the configuration file with the name POSTNET.BCF.
To pre-load the POSTNET.BCF configuration file In the above
macro, you would simply change the 4th line to read:
Shell "C:\B-CODER\B-CODER.EXE POSTNET.BCF",0
A typical application for B-Coder is to either add bar
codes to mailing labels or to insert bar codes into a mail
merge document. The easiest way to do this is to use the "Mail
Merge" (2002) tool in Word to create your merge documents
or labels and then use B-Coder to add the bar codes to the
final merged documents containing all of your merge data.
You would first set up your mail merge in Word as normal using the mail merge
tool. After you set up your data source and insert your "merge fields" in
the main merge document, you could select the merge field (or any static text)
in your main merge document that you want converted to a bar code and change
its style to a new style named "barcode".
(To create a new style, open the "Format" menu, select "Style" and
then click the button marked "New" in the style dialog box. In the "New
Style" dialog box, enter the name "barcode" and click the OK
button.)
Next, you would complete your mail merge as normal by selecting "Merge
to New Document". This will produce a final merge document with all of
the data from the data source inserted into your labels or documents. Any merge
fields or static text that you assigned the style "barcode" to in
your main merge document would also have the style "barcode" in the
final merge document. To fill in the bar codes, you could simply run a macro
that searches through the final merge document looking for any text with the
style "barcode" and replaces that text with a bar code created by
B-Coder. The following page contains an example macro that does just this.
The following WordBasic macro (for Word 6 and Word 7) searches through a document
looking for any text with the style "barcode". If it finds any, it
converts the text to a bar code.
| |
Sub MAIN()
' run B-Coder Minimized
Shell "C:\B-CODER3\B-CODER.EXE", 6
' Note: make sure that the path for B-Coder is
'correct in the above command
' open DDE link to B-Coder
Chan = DDEInitiate("B-Coder", "System")
' initialize B-Coder here - send dde commands to set up your Bar Codes
' DDEExecute Chan, "[Code128]" ' tell B-Coder to use Code 128
' DDEExecute Chan, "[messagewarnings=off]" ' turn off warning messages
' DDEExecute Chan, "[printwarnings=off]"
' DDEExecute Chan, "[height=.5]" ' set bar code height
StartOfDocument ' move to top of document
On Error Goto bye ' quit if an error occurs
While 1 = 1 ' loop forever
EditFindStyle .Style = "BarCode" ' find style "BarCode"
EditFind .Find = "", .WholeWord = 0, .MatchCase = 0, _
.Direction = 0, .Format = 1
If EditFindFound() <> - 1 Then Goto bye ' if not found then quit
BCData$ = Selection$() ' otherwise get bar code data
If Right$(BCData$) = Chr$(13) Then BCData$ = Left$(BCData$, Len(BCData$) -1)
' the above line removes the carriage return at the end of the selected text
'generate a bar code
DDEExecute Chan, "[BARCODE=" + BCData$ + "]"
' ----------- option 1 - replace the text with a bar code
EditClear 'delete the current selection
' option 1 works best when adding bar codes to a Merge Document
' ----------- option 2 - put the bar code below the text
' EndOfLine ' move to end of line
' LineDown 1 ' move down one line
' StartOfLine ' move to the start of this line
' option 2 works best when adding PostNET or other bar codes to mailing labels
' you may need to change the above three lines to get the bar code where you
' need it
EditPaste ' paste in the bar code
Wend ' go find the next one
bye: ' all done
' tell B-Coder to quit
DDEExecute Chan, "[Appexit]"
On Error Goto 0 ' remove error trap
End Sub
|
The following is a subroutine for Word 97/2000 that searches through a document
looking for any text with the style "barcode". If it finds any,
it converts the text to a bar code.
| |
Sub MergeBarCodes()
'run B-Coder Minimized
Shell "C:\B-CODER3\B-CODER.EXE", 6
' Note: make sure that the path for B-Coder is correct in the above command
' open DDE channel to B-Coder
Chan = DDEInitiate("B-Coder", "System")
' initialize B-Coder here- send dde commands to set up Bar Codes
' DDEExecute Chan, "[Code128]" ' tell B-Coder to use Code 128
' DDEExecute Chan, "[messagewarnings=off]" ' turn off warning messages
' DDEExecute Chan, "[printwarnings=off]"
' DDEExecute Chan, "[height=.5]" ' set bar code height
On Error GoTo bye ' quit if an error occurs
Set MyRange = Selection ' define a range object
MyRange.SetRange Start:=ActiveDocument.Content.Start, _
End:=ActiveDocument.Content.End
' set the range to start at the top of the document and end at the bottom
While 1 = 1 ' loop forever
With MyRange.Find ' set Find object properties
.Forward = True ' search forward
.Wrap = wdFindStop ' stop at end of document
.Style = "barcode" ' look for style "barcode"
.Execute ' do it now
End With
If MyRange.Find.Found = False Then GoTo bye ' quit if style not found
BCData$ = Selection.Text ' otherwise get bar code data
If Right$(BCData$, 1) = Chr$(13) Then
' Remove the carriage return at the end of the selected text
BCData$ = Left$(BCData$, Len(BCData$) - 1)
End If
'Create the bar code
DDEExecute Chan, "[BARCODE=" + BCData$ + "]"
' Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdMove
' to put the bar code on the line below the text, un-comment the above line
MyRange.PasteSpecial DataType:=wdPasteMetafilePicture, Placement:=wdInLine
' paste in the bar code
Wend ' go find the next one
bye:
On Error GoTo 0 ' remove error trap
' tell B-Coder to quit
DDEExecute Chan, "[Appexit]"
End Sub
|
|