Home
SEARCH

 

DDE Examples for Microsoft Word


Changing Selected Text To A Bar Code

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

Prompting The User For A Bar Code Message

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

Adding Bar Codes To Labels or a Mail Merge Document In Word

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

  Bar Code Merge for Word 97 and later

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

Back to Code Samples