Hi zusammen,
ich habe zwar ein wenig Grundkenntnisse von VBA für Excel, aber das hier ist mir ein wenig zu hoch und hoffe nun dass ihr mir ein wenig helfen könnnt
Ich benötige um unsere Archivierung auf Arbeit zu beschleunigen ein Makro was Barcodes in Doc-Textdateien auslesen kann.
Ich habe dafür ein fertiges Makro für Word im Netz gefunden was an sich auch funktioniert.
Im Anhang füg ich die original Word Datei und die .dll mal hinzu.
Hier der Code:
<Code Anfang>
Option Explicit
Public Enum BarcodeType
None = 0 ' Not specified
Code39 = 1 ' Code39
EAN = 2 ' EAN/UPC
Code128 = 4 ' Code128
All = 7 ' All: Code39 Or EAN Or Code128
End Enum
Private Sub readBarcode()
Dim oBarcodeDetection As Object
Dim oInlineShape As InlineShape
Dim sBarcodes As String, sAllBarcodes As String
On Error GoTo errHandler
Set oBarcodeDetection = CreateObject("BarcodeDetection")
For Each oInlineShape In ActiveDocument.InlineShapes
If oInlineShape.Type = wdInlineShapePicture Then
oInlineShape.Select
Selection.CopyAsPicture
sBarcodes = oBarcodeDetection.FullScanPage(oBarcodeDetection.GetImageFromClipboard(), 100, BarcodeType.All, True)
If LenB(sBarcodes) > 0 Then
If LenB(sAllBarcodes) > 0 Then sAllBarcodes = sAllBarcodes & "|"
sAllBarcodes = sAllBarcodes & sBarcodes
End If
End If
Next
Selection.EndKey wdStory
ClearClipBoard
If LenB(sAllBarcodes) = 0 Then
MsgBox "Did not detect any barcodes"
Else
MsgBox "Detected barcodes: " & sAllBarcodes
End If
Exit Sub
errHandler:
MsgBox Err.Description
Resume Next
End Sub
Private Sub ClearClipBoard()
On Error Resume Next
Dim oData As New MSForms.DataObject
oData.SetText Text:=Empty
oData.PutInClipboard
End Sub
<Code Ende>
Mein Problem ist jetzt dass das Programm nur funktioniert wenn ich die .dll (nennt sich BarcodeScanner.dll bzw. war dazu eine 2. .dll Datei names BarcodeImaging.dll) in Windows registriere.
Da ich auf Arbeit allerdings keine Admin Rechte besitze habe ich mir gedacht dass ich die .dll an einen zentralen Ort ablegen (sagen wir O:\BarcodeReader\) und dem Macro bei jeder Ausführung sage dass er diese von dort ausführen soll.
Funktioniert meine Idee so überhaupt? Und wenn ja wie müsste ich den Code oben anpassen?
Tausend dank im Voraus
ich habe zwar ein wenig Grundkenntnisse von VBA für Excel, aber das hier ist mir ein wenig zu hoch und hoffe nun dass ihr mir ein wenig helfen könnnt
Ich benötige um unsere Archivierung auf Arbeit zu beschleunigen ein Makro was Barcodes in Doc-Textdateien auslesen kann.
Ich habe dafür ein fertiges Makro für Word im Netz gefunden was an sich auch funktioniert.
Im Anhang füg ich die original Word Datei und die .dll mal hinzu.
Hier der Code:
<Code Anfang>
Option Explicit
Public Enum BarcodeType
None = 0 ' Not specified
Code39 = 1 ' Code39
EAN = 2 ' EAN/UPC
Code128 = 4 ' Code128
All = 7 ' All: Code39 Or EAN Or Code128
End Enum
Private Sub readBarcode()
Dim oBarcodeDetection As Object
Dim oInlineShape As InlineShape
Dim sBarcodes As String, sAllBarcodes As String
On Error GoTo errHandler
Set oBarcodeDetection = CreateObject("BarcodeDetection")
For Each oInlineShape In ActiveDocument.InlineShapes
If oInlineShape.Type = wdInlineShapePicture Then
oInlineShape.Select
Selection.CopyAsPicture
sBarcodes = oBarcodeDetection.FullScanPage(oBarcodeDetection.GetImageFromClipboard(), 100, BarcodeType.All, True)
If LenB(sBarcodes) > 0 Then
If LenB(sAllBarcodes) > 0 Then sAllBarcodes = sAllBarcodes & "|"
sAllBarcodes = sAllBarcodes & sBarcodes
End If
End If
Next
Selection.EndKey wdStory
ClearClipBoard
If LenB(sAllBarcodes) = 0 Then
MsgBox "Did not detect any barcodes"
Else
MsgBox "Detected barcodes: " & sAllBarcodes
End If
Exit Sub
errHandler:
MsgBox Err.Description
Resume Next
End Sub
Private Sub ClearClipBoard()
On Error Resume Next
Dim oData As New MSForms.DataObject
oData.SetText Text:=Empty
oData.PutInClipboard
End Sub
<Code Ende>
Mein Problem ist jetzt dass das Programm nur funktioniert wenn ich die .dll (nennt sich BarcodeScanner.dll bzw. war dazu eine 2. .dll Datei names BarcodeImaging.dll) in Windows registriere.
Da ich auf Arbeit allerdings keine Admin Rechte besitze habe ich mir gedacht dass ich die .dll an einen zentralen Ort ablegen (sagen wir O:\BarcodeReader\) und dem Macro bei jeder Ausführung sage dass er diese von dort ausführen soll.
Funktioniert meine Idee so überhaupt? Und wenn ja wie müsste ich den Code oben anpassen?
Tausend dank im Voraus