Using DLL version of the barcode generator in Excel
This example shows how to use plain DLL version of the StrokeScribe barcode generator in Excel.

How To Proceed
- Download and install the barcode generator;
- Paste the following code into VBA editor in Excel;
- Run the barcode() sub.
The Code Example
The VBA code creates a barcode picture in vector format in a temporary file and then loads it into a Shape object. This method does not require ActiveX or font installation and produces small-sized, scalable barcodes.
#If VBA7 Then ' All Excel versions starting from Excel 2010 - 64-bit VBA overview
#If Win64 Then ' The Declare statements in 64-bit apps must include the PtrSafe keyword.
Private Declare PtrSafe Function Initialize Lib "StrokeScribeDL64.dll" () As Long
Private Declare PtrSafe Function GetVer Lib "StrokeScribeDL64.dll" _
(ByRef major As Long, ByRef major2 As Long, ByRef minor As Long) As Long
Private Declare PtrSafe Function SetLongPropU Lib "StrokeScribeDL64.dll" _
(ByVal name As LongPtr, ByVal val As Long) As Long
Private Declare PtrSafe Function SetDoublePropU Lib "StrokeScribeDL64.dll" _
(ByVal name As LongPtr, ByVal val As Double) As Long
Private Declare PtrSafe Function SetTextPropU Lib "StrokeScribeDL64.dll" _
(ByVal name As LongPtr, ByVal val As LongPtr) As Long
Private Declare PtrSafe Function SetVariantPropU Lib "StrokeScribeDL64.dll" _
(ByVal name As LongPtr, ByRef val As Variant) As Long
Private Declare PtrSafe Function GetLongPropU Lib "StrokeScribeDL64.dll" _
(ByVal name As LongPtr, ByRef val As Long) As Long
Private Declare PtrSafe Function SavePictureU Lib "StrokeScribeDL64.dll" _
(ByVal filename As LongPtr, ByVal format As Long, ByVal w As Long, ByVal h As Long, _
ByVal dpi As Long) As Long
Private Declare PtrSafe Function GetZebraBitsU Lib "StrokeScribeDL64.dll" _
(ByVal zebra As LongPtr, ByRef size As Long) As Long
Private Declare PtrSafe Function GetFontOutU Lib "StrokeScribeDL64.dll" _
(ByVal out As LongPtr, ByRef size As Long) As Long
Private Declare PtrSafe Function GetPictureArray Lib "StrokeScribeDL64.dll" _
(ByRef arr As Variant, ByVal format As Long, ByVal w As Long, ByVal h As Long, _
ByVal dpi As Long) As Long
#Else ' Running on 32-bit version of Excel 2010+.
Private Declare PtrSafe Function Initialize Lib "StrokeScribeDL.dll" () As Long
Private Declare PtrSafe Function GetVer Lib "StrokeScribeDL.dll" _
(ByRef major As Long, ByRef major2 As Long, ByRef minor As Long) As Long
Private Declare PtrSafe Function SetLongPropU Lib "StrokeScribeDL.dll" _
(ByVal name As LongPtr, ByVal val As Long) As Long
Private Declare PtrSafe Function SetDoublePropU Lib "StrokeScribeDL.dll" _
(ByVal name As LongPtr, ByVal val As Double) As Long
Private Declare PtrSafe Function SetTextPropU Lib "StrokeScribeDL.dll" _
(ByVal name As LongPtr, ByVal val As LongPtr) As Long
Private Declare PtrSafe Function SetVariantPropU Lib "StrokeScribeDL.dll" _
(ByVal name As LongPtr, ByRef val As Variant) As Long
Private Declare PtrSafe Function GetLongPropU Lib "StrokeScribeDL.dll" _
(ByVal name As LongPtr, ByRef val As Long) As Long
Private Declare PtrSafe Function SavePictureU Lib "StrokeScribeDL.dll" _
(ByVal filename As LongPtr, ByVal format As Long, ByVal w As Long, ByVal h As Long, _
ByVal dpi As Long) As Long
Private Declare PtrSafe Function GetZebraBitsU Lib "StrokeScribeDL.dll" _
(ByVal zebra As LongPtr, ByRef size As Long) As Long
Private Declare PtrSafe Function GetFontOutU Lib "StrokeScribeDL.dll" _
(ByVal out As LongPtr, ByRef size As Long) As Long
Private Declare PtrSafe Function GetPictureArray Lib "StrokeScribeDL.dll" _
(ByRef arr As Variant, ByVal format As Long, ByVal w As Long, ByVal h As Long, _
ByVal dpi As Long) As Long
#End If
#Else ' Excel XP or 2003 - only 32-bit VBA applications.
Private Declare Function Initialize Lib "StrokeScribeDL.dll" () As Long
Private Declare Function GetVer Lib "StrokeScribeDL.dll" _
(ByRef major As Long, ByRef major2 As Long, ByRef minor As Long) As Long
Private Declare Function SetLongPropU Lib "StrokeScribeDL.dll" _
(ByVal name As Long, ByVal val As Long) As Long
Private Declare Function SetDoublePropU Lib "StrokeScribeDL.dll" _
(ByVal name As Long, ByVal val As Double) As Long
Private Declare Function SetTextPropU Lib "StrokeScribeDL.dll" _
(ByVal name As Long, ByVal val As Long) As Long
Private Declare Function SetVariantPropU Lib "StrokeScribeDL.dll" _
(ByVal name As Long, ByRef val As Variant) As Long
Private Declare Function GetLongPropU Lib "StrokeScribeDL.dll" _
(ByVal name As Long, ByRef val As Long) As Long
Private Declare Function SavePictureU Lib "StrokeScribeDL.dll" _
(ByVal fileName As Long, ByVal format As Long, ByVal w As Long, ByVal h As Long, _
ByVal dpi As Long) As Long
Private Declare Function GetZebraBitsU Lib "StrokeScribeDL.dll" _
(ByVal zebra As Long, ByRef size As Long) As Long
Private Declare Function GetFontOutU Lib "StrokeScribeDL.dll" _
(ByVal out As Long, ByRef size As Long) As Long
Private Declare Function GetPictureArray Lib "StrokeScribeDL.dll" _
(ByRef arr As Variant, ByVal format As Long, ByVal w As Long, ByVal h As Long, _
ByVal dpi As Long) As Long
#End If
' Look for more barcode type definitions here
Private Const CODE128A = 0
Private Const CODE128B = 1
Private Const CODE128C = 2
Private Const EAN13 = 3
Private Const CODE128 = 5
Private Const PDF417 = 6
Private Const DATAMATRIX = 8
Private Const EAN128 = 17
Private Const QRCODE = 25
Private Const GS1DATAMATRIX = 30
Private Const AZTEC = 33
' Picture type definitions for SavePictureU()
Private Const BMP = 0
Private Const GIF = 1
Private Const PNG = 2
Private Const JPG = 3
Private Const EMF = 4
Private Const TIFF = 5
Private Const BMP24 = 6
Private Const WMF = 7
Private Sub barcode()
Dim wsh As Worksheet
Set wsh = ActiveSheet
Dim rc As Long
rc = Initialize()
If rc <> 0 Then
Debug.Print "Initialize() failed, error code = " & rc
Exit Sub
End If
SetLongPropU StrPtr("Alphabet"), QRCODE ' or DATAMATRIX or PDF417 or CODE128
Dim text As String
text = "ABCDE3457" ' Paste your own barcode text here
rc = SetTextPropU(StrPtr("Text"), StrPtr(text))
If rc > 0 Then
Debug.Print "SetTextProp() failed, error code: " & rc
Exit Sub
End If
Dim pic_path As String
pic_path = Environ("TEMP") & "\barcode.wmf"
' A square barcode picture, 100x100 TWIPS (1440 TWIPS per inch)
rc = SavePictureU(StrPtr(pic_path), WMF, 100, 100, 0)
If rc > 0 Then
Debug.Print "SavePicture() failed, error code: " & rc
Exit Sub
End If
On Error Resume Next ' This deletes a previously created barcode shape if you have one
wsh.Shapes("barcode").Delete
On Error GoTo 0
Dim shp As Shape
Set shp = wsh.Shapes.AddPicture(pic_path, msoFalse, msoTrue, 1, 1, _
Application.CentimetersToPoints(3), Application.CentimetersToPoints(3))
shp.name = "barcode"
Kill pic_path
End Sub
More examples
For more examples, visit the Programming examples section in the DLL documentation.
© 2025 StrokeScribe. All rights reserved. Use of any portion of this site constitutes acceptance of our Terms of Use and Privacy Policy. The website material may not be reproduced, except with the prior written permission.