结合Python脚本和VBA开发Excel宏 生成所选单元格内容的二维码
一. 编写python脚本
python版本:3.11
import qrcode
import sys
# 接受用户输入的文本和图像路径作为命令行参数
text_to_encode = sys.argv[1]
image_path = sys.argv[2]
# 创建一个二维码对象
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)
# 将文本添加到二维码对象
qr.add_data(text_to_encode)
qr.make(fit=True)
# 创建二维码图像
img = qr.make_image(fill_color="black", back_color="white")
# 保存二维码图像为文件
img.save(image_path)
print("二维码生成成功!")
二、在Excel中编写VBA代码
Excel版本:2021
1. 添加开发工具
在 Excel 中,点击 “文件” > “选项” > “自定义功能区”> “所有选项卡”,将 “开发工具” 添加到右侧自定义功能区。
2. 打开VBA编辑器
在 “开发工具” 选项卡中,点击 “Visual Basic” 按钮,打开 Visual Basic for Applications (VBA) 编辑器。
3. 创建一个新模块
在 VBA 编辑器中,右键点击 “VBAProject (YourWorkbookName)”,点击 “插入” > “模块” 来创建一个新模块。
4. 编写 VBA 代码
Sub GenerateQRCodeAndInsert()
' 获取选定单元格
Dim selectedRange As Range
Set selectedRange = Selection
If Not selectedRange Is Nothing Then
' 获取选定单元格的内容并将其转换为字符串
Dim cellContent As String
cellContent = ""
' 循环遍历选定的单元格,将它们的内容连接在一起
Dim cell As Range
For Each cell In selectedRange
cellContent = cellContent & CStr(cell.Value) & " "
Next cell
' 指定要使用的 Python 解释器的完整路径
Dim pythonInterpreter As String
pythonInterpreter = "E:\miniconda\python.exe" ' Python 解释器路径
' 指定 Python 脚本路径和图像路径
Dim pythonScript As String
Dim imagePath As String
pythonScript = "D:\PyCode\generate_qrcode.py" ' Python 脚本路径
imagePath = "D:\PyCode\qr_code.png" ' 二维码图像路径,不保存后续会删除
If cellContent <> "" Then
' 创建一个 Shell 对象
Dim shell As Object
Set shell = CreateObject("WScript.Shell")
' 构建要执行的命令,包括指定的 Python 解释器路径
Dim command As String
command = pythonInterpreter & " """ & pythonScript & """ """ & cellContent & """ """ & imagePath & """"
' 使用 Shell 对象执行命令
shell.Run command, 1, True
' 获取生成的二维码图像文件路径
Dim qrCodeImageFile As String
qrCodeImageFile = imagePath
' 插入生成的二维码图像到工作表
Dim ws As Worksheet
Set ws = selectedRange.Worksheet
Dim leftPos As Single
Dim topPos As Single
leftPos = selectedRange.Left
topPos = selectedRange.Top
' 插入图片到工作表,使用 Shapes 对象
Dim shape As shape
Set shape = ws.Shapes.AddPicture(Filename:=qrCodeImageFile, LinkToFile:=False, SaveWithDocument:=True, Left:=leftPos, Top:=topPos, Width:=100, Height:=100)
' 删除生成的二维码图像文件
If Dir(qrCodeImageFile) <> "" Then
Kill qrCodeImageFile
End If
End If
End If
End Sub
三、运行宏
在 Excel中,选择一个或多个单元格,点击 “开发工具” 选项卡中的 “宏” 按钮,选择刚创建的宏GenerateQRCodeAndInsert,点击 “执行”。
四、查看生成的二维码
可以选择单个单元格,也可以选择多个单元格。
查看所选单元格的信息已经保存在二维码中。
PS:微信扫看不到中文汉字,但可以复制结果,数字和英文都没有问题,可以正常显示。