在 Excel VBA 產生 QRCode 與自動調整大小 這篇文章裡,我們利用了網路上的服務來產生 QRCode,並插入到 Excel 表格裡面。但透過網路來取得 QRCode,總是覺得不太安心,深怕哪天被封鎖。
於是,本篇利用 Python 的 QRCode 套件並將程式轉換為執行檔。使用本機的程式來產生 QRCode 圖片,這樣就不用怕網路不能用的問題了。但有個缺點就是沒辦法產生中文的 QRCode,這點要先提醒一下了。中文的部份,若直接在命令列輸入當參數會無法使用,這是因為 Windows 預設是使用 BIG5 來當編碼,將之進行轉碼即可。
中文的部份,是在接案的時候發現的,尚未更新附件。請讀者在程式碼中自行修改,加入有 “utf-8” 的那一行。
Python QRCode 程式
程式本身還蠻直覺易用的,是利用 Python 的 QRCode 套件,所以若要從原始程式使用,要記得先用 pip install qrcode 來安裝。
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 |
# -*- coding: UTF-8 -*- import qrcode import sys import os from tempfile import gettempdir import time # 需要4個參數,在與 Excel 配合時,基本上只有 string 的部份會變動 # string: 要產生 QRCode 的字串 # version: 圖片大小設定 1~40. 這邊我們固定用1, 圖會比較小 # boxsize: 圖裡面的像素大小,也就是每個黑點要多大,大一點整個圖也會變大,這裡使用50 # border: 旁邊白框大小,這裡設定為2。 if len(sys.argv) < 5: print "Need 4 args. string, version, boxsize, border" sys.exit(1) msg=sys.argv[1].decode('big5').encode("utf-8") ver=int(sys.argv[2]) boxsize=int(sys.argv[3]) border=int(sys.argv[4]) # 產生一個 qrcode 物件,除上述參數外,另外指定錯誤修正程度,設置為 High qr = qrcode.QRCode( version=ver, error_correction=qrcode.constants.ERROR_CORRECT_H, box_size=boxsize, border=border, ) # 產生圖檔,並存到 Windows TEMP 目錄下的 "tmpgr.png" qr.add_data(msg) qr.make(fit=True) img = qr.make_image() img.save(gettempdir() +"/tmpqr.png") print "Genfile at " + gettempdir() +"/tmpqr.png" |
Excel VBA 程式
使用本機程式產生 qrcode,不用再考慮網路/格式的問題,使得程式簡化了不少。程式碼的部份就不再解釋,最後都是把一個圖檔插入到表格內。其餘大同小異,程式解釋可參考前篇。
展示影片
用法基本上與原本方式相同,請參考之前的影片即可。
檔案下載
- Excel 示展檔 + Python 執行檔
- qrgen.py – 產生 qrcode 的原始 Python 程式
方便給我可以產生『含中文』的程式執行檔嗎?感謝
文章中有說明,若使用原始碼來產生,加入 utf-8 的敘述即可。
請問程式執行時會一直出現這列Kill (png)找不到檔案及
Shell (exe + ” ” + Chr(34) + Value + Chr(34) + ” 1 50 2″)錯誤,要如何排除?謝謝