Read barcodes from folder - Microsoft Excel
BarCode Reader SDK sample in Microsoft Excel demonstrating ‘Read barcodes from folder’
BarcodeReaderCode_VB.txt
' IMPORTANT: This demo uses VBA so if you have it disabled please temporary enable
' by going to Tools - Macro - Security.. and changing the security mode to ""Medium""
' to Ask if you want enable macro or not. Then close and reopen this Excel document
' You should have evaluation version of the ByteScout SDK installed to get it working - get it from https://bytescout.com
' If you are getting error message like
' "File or assembly named Bytescout SDK, or one of its dependencies, was not found"
' then please try the following:
'
' - Close Excel
' - (for Office 2003 only) download and install this hotfix from Microsoft:
' http://www.microsoft.com/downloads/details.aspx?FamilyId=1B0BFB35-C252-43CC-8A2A-6A64D6AC4670&displaylang=en
'
' and then try again!
'
' If you have any questions please contact us at http://bytescout.com/support/ or at support@bytescout.com
'==============================================
'References used
'=================
'Bytescout Barcode Reader SDK
'
' IMPORTANT:
' ==============================================================
'1) Add the ActiveX reference in Tools -> References
'2) Enter path of folder containing barcode files's value into text box
'3) Get All files into that folder and iterage through it
'4) Read all barcodes into each file and write all values into cells
'==================================================================
Option Explicit
Sub Barcode_Click()
'Fetch the Worksheet
Dim mySheet As Worksheet
Set mySheet = Worksheets(1) 'Barcode_Data Sheet
' Set Initial Value
mySheet.Range("A2").Value = "Barcode Value"
mySheet.Range("B2").Value = "File Name"
Dim InputFolder As String
InputFolder = mySheet.OLEObjects("TextBox1").Object.Value
' Set cell index value
Dim CellIndex As Integer
CellIndex = 2
If InputFolder = "" Then
MsgBox "Input Folder value is empty"
Else
Call ProcessFolder(InputFolder, mySheet, CellIndex)
End If
End Sub
Sub ProcessFolder(ByVal folderPath As String, ByRef mySheet As Worksheet, ByRef CellIndex As Integer)
Dim Reader As New Bytescout_BarCodeReader.Reader
Set Reader = CreateObject("Bytescout.BarCodeReader.Reader")
' Set multiple barcode types for searching
Reader.BarcodeTypesToFind.Code39 = True
Reader.BarcodeTypesToFind.QRCode = True
Reader.BarcodeTypesToFind.PDF417 = True
Reader.BarcodeTypesToFind.EAN13 = True
' define allowed input images extensions
Dim inputImagesExtensions As String
inputImagesExtensions = "JPG,JPEG,PNG,BMP,PDF,TIF"
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objFolder
Set objFolder = objFSO.GetFolder(folderPath)
Dim colFiles
Set colFiles = objFolder.Files
If colFiles.Count = 0 Then
MsgBox "Entered Folder contains no files"
Else
Dim objFile
For Each objFile In colFiles
' Check the file type
If InStr(inputImagesExtensions, UCase(objFSO.GetExtensionName(objFile.Name))) > 0 Then
Reader.ReadFromFile objFile.Path
Dim i
For i = 0 To Reader.FoundCount - 1
' Get cell value
CellIndex = (CellIndex + 1)
mySheet.Range("A" + CStr(CellIndex)).Value = Reader.GetFoundBarcodeValue(i)
mySheet.Range("B" + CStr(CellIndex)).Value = objFile.Name
Next
End If
Next
Dim subFolder
For Each subFolder In objFolder.SubFolders
ProcessFolder subFolder, mySheet, CellIndex
Next
End If
End Sub
Reference Error - README.txt
' IMPORTANT: This demo uses VBA so if you have it disabled please temporary enable
' by going to Tools - Macro - Security.. and changing the security mode to ""Medium""
' to Ask if you want enable macro or not. Then close and reopen this Excel document
' You should have evaluation version of the ByteScout SDK installed to get it working - get it from https://bytescout.com
' If you are getting error message like
' "File or assembly named Bytescout SDK, or one of its dependencies, was not found"
' then please try the following:
'
' - Close Excel
' - (for Office 2003 only) download and install this hotfix from Microsoft:
' http://www.microsoft.com/downloads/details.aspx?FamilyId=1B0BFB35-C252-43CC-8A2A-6A64D6AC4670&displaylang=en
'
' and then try again!
'
' If you have any questions please contact us at http://bytescout.com/support/ or at support@bytescout.com