添加二维码控件到 Excel_excel表格二维码控件

deer332025-09-17技术文章20

Excel VBA 本身没有内置二维码控件,但可以通过添加 Microsoft BarCode Control (ActiveX 控件) 实现二维码生成。以下是具体操作步骤和代码:

步骤 1:添加二维码控件到 Excel

1. 启用开发工具选项卡

- 文件 → 选项 → 自定义功能区 → 勾选「开发工具」→ 确定。


2. 插入 Microsoft BarCode Control

- 转到「开发工具」选项卡 → 点击「插入」→ 选择「ActiveX 控件」→ 点击「更多控件」。

- 在列表中找到 `Microsoft BarCode Control 16.0`(版本号可能不同)→ 点击「确定」。

- 在工作表上拖动鼠标绘制控件 → 右键控件 → 「属性」→ 将名称改为 `QRCodeCtrl1`(或其他自定义名称)。


3. 设置控件样式为二维码

在「属性」窗口中修改以下参数:

- `Style` → 设置为 `11 - QR Code`

- `SubStyle` → 设置为 `1 (QR_CODE)`

步骤 2:通过 VBA 动态赋值

```vba

' 将 ListBox 的值赋给二维码控件

Private Sub ListBox1_Click()

Dim selectedRow As Long

selectedRow = ListBox1.ListIndex ' 获取选中行索引


' 获取“批次号”列的索引(根据你的自定义函数)

Dim batchColIndex As Long

batchColIndex = GetListBoxColumnIndex(ListBox1, "批次号")


' 提取批次号

Dim batchNumber As String

batchNumber = ListBox1.List(selectedRow, batchColIndex)


' 赋值给二维码控件

Sheets("Sheet1").Shapes("QRCodeCtrl1").DrawingObject.Object.Value = batchNumber

End Sub

关键说明

1. 控件命名一致性

- 确保代码中的控件名称(如 `"QRCodeCtrl1"`)与添加到工作表的控件名称完全一致。


2. 二维码样式设置

- 必须设置 `Style = 11`(二维码样式)才能正确生成二维码 。


3. 64 位系统兼容性问题

- Microsoft BarCode Control 是 32 位控件,在 64 位 Office 中可能报错。

- 解决方案:

- 改用第三方库(如 )生成二维码图片 。

- 或安装 64 位兼容的 ActiveX 控件(需自行开发/购买)。


替代方案(推荐用于 64 位 Office)

如果无法使用 ActiveX 控件,可通过 VBA 调用 ZXing 库 生成二维码图片:

```vba

' 需要先导入 ZXing 模块(从 GitHub 下载)

Sub GenerateQRWithZXing()

Dim qrValue As String

qrValue = "需要生成二维码的内容"


' 生成二维码并插入到工作表

Dim img As Object

Set img = CreateQRCode(qrValue, 200, 200) ' 宽高为 200px

Sheets("Sheet1").Pictures.Insert img

End Sub

```

> 详细方法参考: 。


引用来源

- :使用 ZXing 库生成二维码(兼容 64 位 Office)。

- :Microsoft BarCode Control 的二维码样式设置(Style=11)。