当前位置:   article > 正文

Python+VBA开发Excel插件生成所选单元格内容的二维码_excel批量生成二维码插件

excel批量生成二维码插件

结合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("二维码生成成功!")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

二、在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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64

三、运行宏

在 Excel中,选择一个或多个单元格,点击 “开发工具” 选项卡中的 “宏” 按钮,选择刚创建的宏GenerateQRCodeAndInsert,点击 “执行”。

四、查看生成的二维码

在这里插入图片描述
可以选择单个单元格,也可以选择多个单元格。
查看所选单元格的信息已经保存在二维码中。
PS:微信扫看不到中文汉字,但可以复制结果,数字和英文都没有问题,可以正常显示。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/661900
推荐阅读
相关标签
  

闽ICP备14008679号