Tạo QR Code bằng VBA sử dụng API của Google

Liên hệ QC

ngduychien

Thành viên chính thức
Tham gia
6/1/07
Bài viết
71
Được thích
45
Trong quá trình thiết kế AddIns phụ vụ nhu cầu của cá nhân, tôi có tìm kiếm và sử dụng ba hàm này để tạo QR Code. Chia sẻ cùng anh em trên group nhé.
Hàm lấy QR Code từ API
Mã:

Sub InsertQR()
Dim xHttp: Set xHttp = CreateObject("Microsoft.XMLHTTP")
Dim bStrm: Set bStrm = CreateObject("Adodb.Stream")
Dim Size: Size = 250 'dalam Pixels
Dim QR, Name, val
Dim Invalid: Invalid = "\/:*?" & """" & "<>|"
For Each val In Selection
Name = val.Value
For intChar = 1 To Len(Name)
If InStr(Invalid, LCase(Mid(Name, intChar, 1))) > 0 Then
MsgBox "The file: " & vbCrLf & """" & Name & """" & vbCrLf & vbCrLf & " is invalid!"
Exit Sub
End If
Next
QR = "http://chart.googleapis.com/chart?chs=" & Size & "x" & Size & "&cht=qr&chl=" & Name
xHttp.Open "GET", QR, False
xHttp.Send
With bStrm
.Type = 1 '//binary
.Open
.write xHttp.responseBody
.savetofile ThisWorkbook.Path & Application.PathSeparator & Name & ".png", 2 '//overwrite
.Close
End With
Next
End Sub
Hàm chèn QR Code tạo được vào Sheet đang mở
Mã:

Function ShowPic(PicFile As String) As String
Dim AC As Range
On Error GoTo Done
Set AC = Application.Caller
ActiveSheet.Shapes.AddPicture(ThisWorkbook.Path & Application.PathSeparator & PicFile, False, True, AC.Left, AC.Top, 30, 30).Name = "QR"
ShowPic = ""
Exit Function
Done:
ShowPic = "Error"
End Function

Mã:

Sub PutTheQR()
Dim val As String
val = ActiveCell.Offset(0, -1).Value
Do While val <> ""
ActiveCell.FormulaR1C1 = "=ShowPic(RC[-1])"
ActiveCell.ClearContents
ActiveCell.Offset(1, 0).Activate
val = ActiveCell.Offset(0, -1).Value
Loop
End Sub
 
Trong quá trình thiết kế AddIns phụ vụ nhu cầu của cá nhân, tôi có tìm kiếm và sử dụng ba hàm này để tạo QR Code. Chia sẻ cùng anh em trên group nhé.
Hàm lấy QR Code từ API

Hàm chèn QR Code tạo được vào Sheet đang mở

Bạn có cái nào dùng Offline mà tốc độ cao không, cho mình với.
 
Upvote 0
Cái này trên mạng nhiều mà.Tìm là thấy mà.
Em có sưu tầm được file này nhưng tốc độ chậm quá, nếu sử dụng để in hàng loạt nhiều tem thì không dùng được.
Bác có sưu tầm được file nào gửi em tham khảo với.
 

File đính kèm

  • Qrcode.xlsm
    162 KB · Đọc: 118
Upvote 0
:D chỉ là VBA Access thôi bạn.
Code VBA thì dùng bên Access hay Excel hay Word đều được. Nhưng tôi không thích dùng kết nối sớm vì mình thêm reference nhưng gửi cho người khác thì rất có thể người ta có MISSING. Ngay việc đăng ký thôi đã làm nhiều người vã mồ hôi hột. :D

Trong trường hợp này việc đăng ký chỉ là phải chuột rồi chạy với quyền administrator nên đơn giản.

zxing.png

Bài #6 nói về nhanh chậm chắc nói về code tạo QR code trong ZXing.dll. Rõ ràng không có VBA gì ở đấy. Và so sánh với qrcode excel vba trong bài #4. Tất nhiên code trong ZXing.dll không dính dáng gì tới VBA, nhưng chắc chắn cả kỹ thuật cũng không phải như trong bài #4.
 
Lần chỉnh sửa cuối:
Upvote 0
Code VBA thì dùng bên Access hay Excel hay Word đều được. Nhưng tôi không thích dùng kết nối sớm vì mình thêm reference nhưng gửi cho người khác thì rất có thể người ta có MISSING. Ngay việc đăng ký thôi đã làm nhiều người vã mồ hôi hột. :D
Trong trường hợp này việc đăng ký chỉ là phải chuột rồi chạy với quyền administrator nên đơn giản.
Bài #6 nói về nhanh chậm chắc nói về code tạo QR code trong ZXing.dll. Rõ ràng không có VBA gì ở đấy. Và so sánh với qrcode excel vba trong bài #4. Tất nhiên code trong ZXing.dll không dính dáng gì tới VBA, nhưng chắc chắn cả kỹ thuật cũng không phải như trong bài #4.

Đúng là trước đây cũng dùng cái trang mà anh đã chia sẻ lúc trước thuần VBA để tạo QR code (link).
Sau này thấy có cái thư viện của Zxing viết sẳn, chạy tốt nên dùng luôn cho tiện. Nó có code gốc từ Java, sau đó được port sang nhiều ngôn ngữ khác để sử dụng như: .Net, C++, Python, Javascript...
 
Upvote 0
Upvote 0
Cảm ơn anh,anh có thể viết một ứng dụng tạo qrcode offline siêu tốc độ bằng excel mà không sử dụng thư viện liên kết ngoài được không ạ.
Lên sao hỏa con người còn làm được, mã VBA tạo barcode thôi thì có gì mà khó bạn

Xin lỗi các bạn mình quên chỉ dẫn:
Dưới đây là thư viện QRCodeLib của một anh Nhật Bản, ảnh dựa trên phát minh của công ty Denso Wave, nên mã được chia sẻ nguồn mở.
Dựa trên phát minh người khác là không được phép nói mình sở hữu nhé các bạn.

Mã duy nhất chỉ sử dụng VBA.

Tôi khuyên các bạn không nên sử dụng thư viện này bởi vì nó gây tốn kém và tiêu hao tài nguyên khi khởi động Excel.
Các bạn nên sử dụng API online rất dễ dàng, nhanh chóng và gọn lẹ hơn rất là nhiều.

 

File đính kèm

  • QRCodeLib.xlam
    345.4 KB · Đọc: 152
Lần chỉnh sửa cuối:
Upvote 0
Lần chỉnh sửa cuối:
Upvote 0
Lấy đâu thì phải ghi rõ nguồn.

Không ghi rõ nguồn là ấy ấy lắm.


Ví dụ:


 
Upvote 0
Nhân tiện có chủ đề Qr code đang rôm rả, các bác cho em hỏi vấn đề này với ạ:
Trước em có làm Qr trên trang này: https://vi.qr-code-generator.com/ . Nó cho chèn logo vào thấy cũng đẹp, lại còn thống kê được số người quét mã, cả ở khu vực luôn. Vì e dùng miễn phí nên khi dừng các mã quét không ra được nữa (Nội dung mã là url web công ty)
Các bác cho hỏi làm sao nó có thể chặn mã đó được vậy ạ, vì trước đó em dùng các app web bình thường (Không phải như bọn app icheck). Bác nào giải thích giúp cho em thông tỏ mới
Em cảm ơn!
 
Upvote 0
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom