Python+VBA开发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("二维码生成成功!")

二、在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:微信扫看不到中文汉字,但可以复制结果,数字和英文都没有问题,可以正常显示。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用Python中的xlrd和jieba库来实现对Excel中同一列单元格字符串相似度的分析。具体步骤如下: 1. 读取Excel文件中的数据,可以使用xlrd库中的open_workbook()和sheet_by_index()方法来实现。 2. 使用jieba库中的cut()方法对每个单元格中的字符串进行分词处理,并将结果存储到一个列表中。 3. 使用Python中的difflib库中的get_close_matches()方法来计算每个单元格中的字符串与其他单元格中的字符串的相似度,并将结果存储到一个新的Excel文件中。 下面是示例代码,可以根据实际需求进行修改: ```python import xlrd import jieba import difflib import xlwt # 读取Excel文件 data = xlrd.open_workbook('data.xlsx') table = data.sheet_by_index(0) # 分析同列单元格字符串相似度 results = [] for i in range(1, table.nrows): row = table.row_values(i) cells = [jieba.cut(cell) for cell in row] for j in range(len(cells)): matches = difflib.get_close_matches(cells[j], cells[:j] + cells[j+1:]) if matches: results.append((i, j, matches[0])) # 将结果存储到新的Excel文件中 book = xlwt.Workbook() sheet = book.add_sheet('Sheet1') sheet.write(0, 0, 'Row') sheet.write(0, 1, 'Column') sheet.write(0, 2, 'Similarity') for i, result in enumerate(results): sheet.write(i+1, 0, result[0]) sheet.write(i+1, 1, result[1]) sheet.write(i+1, 2, result[2]) book.save('results.xls') ``` 这段代码将会读取名为data.xlsx的Excel文件,并分析第一张表格中的数据。它会对每个单元格中的字符串进行分词处理,并使用difflib库中的get_close_matches()方法计算相似度。最终,它将结果存储到名为results.xls的新Excel文件中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值