提问人:maxxev 提问时间:1/18/2023 更新时间:6/6/2023 访问量:515
DataMatrix 条形码支持 - 通过 VBA 而不是公式触发
DataMatrix barcode support - trigger via VBA rather than formula
问:
我通过 Patratacus 答案中的这个问题找到了这个优秀的代码;使用 Excel VBA 生成二维(PDF417 或 QR)条形码
然而,代码远远超出了我的范围,我在制作数据矩阵条形码标签时遇到了不一致的问题,我相当确定这是由于时间原因(每 4 个左右的条形码都会扫描产品的详细信息)。
我相信这是因为代码正在获取一个值,将其放入一个命名范围内,然后将一些值索引/匹配到其他单元格中,并将文本连接起来以生成条形码的值。我认为如果我在子例程完成后通过 VBA 调用条形码更新,而不是使用公式生成它,这在第一个值更新后立即发生,则可以解决这个问题。
该代码具有触发 QR 条形码类型的内置方式,但不适用于 Data Matrix。
Sub Test_RenderQRCode()
Call RenderQRCode(Application.ActiveSheet.Name, "A2", "Hello World", "mode=M", False)
End Sub
谁能为我提供如何为 DM 格式做到这一点?
老实说,我什至不知道如何开始使用代码来做到这一点。 我尝试在我的代码中使用优化代码(例如禁用应用程序更新、计算等),在单元格值更改时触发条形码,但它没有解决问题。
答:
0赞
cuprumx
6/6/2023
#1
对于 DataMatrix,它可以是这样的:
Sub Test_RenderDMXCode()
Call RenderDMXCode(Application.ActiveSheet.Name, "A2", "Hello World", True)
End Sub
Public Sub RenderDMXCode(workSheetName As String, cellLocation As String, textValue As String, Optional addLabel As Boolean)
Dim s_param As String
Dim s_encoded As String
Dim xSheet As Worksheet
Dim QRShapeName As String
Dim QRLabelName As String
s_encoded = dmx_gen(textValue, "")
Call DrawQRCode(s_encoded, workSheetName, cellLocation)
Set xSheet = Worksheets(workSheetName)
QRShapeName = "BC" & "$" & Left(cellLocation, 1) _
& "$" & Right(cellLocation, Len(cellLocation) - 1) & "#GR"
QRLabelName = QRShapeName & "_Label"
With xSheet.Shapes(QRShapeName)
.Width = 25
.Height = 25
End With
On Error Resume Next
If Not (xSheet.Shapes(QRLabelName) Is Nothing) Then
xSheet.Shapes(QRLabelName).Delete
End If
'Additonal text on right
If IsMissing(addLabel) Then
addLabel = True
End If
If addLabel Then
xSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _
xSheet.Shapes(QRShapeName).Left + 35, _
xSheet.Shapes(QRShapeName).Top, _
Len(textValue) * 6, 30) _
.Name = QRLabelName
With xSheet.Shapes(QRLabelName)
.Line.Visible = msoFalse
.TextFrame2.TextRange.Font.Name = "Arial"
.TextFrame2.TextRange.Font.Size = 9
.TextFrame.Characters.text = textValue
.TextFrame2.VerticalAnchor = msoAnchorMiddle
End With
End If
End Sub
子“RenderQRCode”与使用 Excel VBA 生成 2D(PDF417 或 QR)条形码中所述相同
评论