條形碼的應用越來越普及,隻是目前的應用中還是以一維居多,比如目前超市收銀台都是刷一維碼的。由于一維碼本身的編碼機制所限,一維碼所能表示的資訊也是有限的,特别是資訊多了以後,很難識别。是以二維碼應用而生,根據不同的編碼形式,可以儲存不同量的資訊,但總體來說,二維碼比一維碼能夠存儲的資訊量大多了。并且最重要的是二維碼還具有糾錯功能,也就是說即便二維碼因意外有部分損壞,仍然有讀出資料的可能。
最近因為要用到二維碼,網上搜了一下,有個别小軟體能夠實作二維碼的生成,但由于是EXE格式,無法修改,是以不實用。然後就是想到一些二維碼控件,搜到不少,但基本上都是收費的,并且也不知道效果怎樣。
終于找到一個QRmaker控件,使用也很簡單,可以用于VB平台,當然VBA用也就沒問題了。
一、VB中調用QRmaker
先“建立”一個“标準EXE”工程,在控件工具箱中要添加QRmaker控件,然後在Form上分别添加一個Textbox控件(我這裡取的名稱為txtInputData)和一個QRmaker控件。其中Textbox控件的屬性可根據自己的喜好進行設定,QRmaker控件的AutoRedraw屬性建議設定為“1-ArOn”,當然也可以在代碼中直接控制。
輕按兩下窗體,進入代碼編輯界面,分别完成以下代碼。
Private Sub Form_Load()
txtInputData.Text = "請單擊此處,輸入要生成二維碼的文本"
End Sub
Private Sub txtInputData_Click()
txtInputData.Text = ""
Private Sub txtInputData_Change()
QRmaker1.InputData = txtInputData.Text
End Sub
如果沒有設定QRmaker的AutoRedraw屬性,則txtInputData_Change事件中還需要添加“QRmaker1.Refresh”代碼行,總的代碼如下圖所示。
最後生成EXE,可以輸入文字,可以看到已經可以生成二維碼了,由于使用了txtInputData_Change()事件,是以在文本框中輸入的文字,下方的二維碼會實時的展現。
至此VB中調用QRmaker生成二維碼已經沒什麼問題了,其他細節部分可根據實際情況進行修改。
二、VBA中調用QRmaker
由于VBA的窗體環境和VB中的差不多,是以在VBA窗體中調用QRmaker就不再描述,這裡主要說明一下如何在表格中引用QRmaker。
第一步:單擊Office按鈕,在Excel選項中開啟“開發工具”項,進而讓“開發工具”頁籤顯示出來。
第二步,插入→其他控件,選擇QRmaker。
然後就是在合适的地方繪出QRmaker控件,這時會自動進入“設計模式”,單擊“屬性”可以展開控件的“屬性”欄,可根據需要設定相關屬性,和VB中的操作雷同。
接下來與VB中不一樣的地方就是如何在VBA代碼中引用QRmaker控件了,這點和VB中有點小差別。
添加“子產品”,添加“過程”,輸入代碼。
Public Sub QRCodeTest()
'定義QRString變量,存儲要生成二維碼的字元串
Dim QRString As String
'給QRString指派,根據實際情況指派
QRString = Sheet1.Range("E14") & Sheet1.Range("F14") & ";" & Sheet1.Range("E15") & Sheet1.Range("F15") & ";" & Sheet1.Range("E16") & Sheet1.Range("F16") & "_" & Sheet1.Range("G16") & "_" & Sheet1.Range("F17") & "_" & Sheet1.Range("G17")
Sheet1.Select
'設定QRmaker的AutoRedraw屬性為ArOn
Sheet1.QRmaker1.AutoRedraw = ArOn
'将字元串傳遞給QRmaker控件
Sheet1.QRmaker1.InputData = QRString
'重新整理QRmaker的内容,如果AutoRedraw屬性為On,則無需此句
'Sheet1.QRmaker1.Refresh
然後就可以在Excel表格中生成二維碼了,根據實際情況,在填寫相關資料後,執行上面的語句就可以了,其他的工作該咋的就咋的吧。
附上QRmaker控件的下載下傳。
另:這裡由于是利用QRmaker控件來生成二維碼,是以并沒有技術含量。而就二維碼本身,包含的知識點還是相當多的,目前還沒去了解過編輯技術層面的内容。期待有達人們能夠放出類似控件的源代碼,進而讓更多的人了解并掌握二維碼的知識。
PS:現在的二維碼真是無處不在,前段時間移動贈送給我的電影票都是以二維碼的形式發送的。現在火車票上也加上二維碼了,且現在很多手機都支援二維碼識别了。一個新的讀碼時代即将到來。
<a href="http://down.51cto.com/data/2355330" target="_blank">附件:http://down.51cto.com/data/2355330</a>
本文轉自windyli 51CTO部落格,原文連結:http://blog.51cto.com/windyli/284574,如需轉載請自行聯系原作者