VBAで
・QRコードを作成
できます!!
なお
・手動でもQRコードを作成
できます!
手動で作成する方法は、
以下の記事をご確認ください!
前提
「Access」または「Microsoft 365 Access ランタイム」がインストールされていないと、VBAでQRコードの作成が出来ないかもしれません。
※もしかしたら出来るかもしれません。未確認です。
※後述のVBAコードは、「Microsoft 365 Access ランタイム」がインストールされている状態で実行/確認しています。
「Microsoft 365 Access ランタイム」のダウンロード及びインストールについては、以下の記事の当該部分をご確認ください。
VBAコード(QRコードの作成)
ここでは例として、
・シート「sample」のセル「B2」の位置に
・QRコードを作成
します。
Option Explicit
Sub createQRCode()
Dim ws As Worksheet
Dim xObjOLE As OLEObject
Dim topPosition As Double
Dim leftPosition As Double
'QRコードを作成するシートを指定
Set ws = Worksheets("sample")
'「OLEObjectオブジェクト」を作成
Set xObjOLE = ws.OLEObjects.Add("BARCODE.BarCodeCtrl.1")
'「OLEObjectオブジェクト」をQRコードにする
With xObjOLE.Object
'QRコード(=11)を指定
.Style = 11
'アクセス先となるURLを指定
.Value = "https://excel-vba.work/"
End With
'QRコードを表示させる位置を取得 ※例としてセル「B2」の位置を取得
With ws.Range("B2")
topPosition = .Top
leftPosition = .Left
End With
'QRコードのサイズ、位置、名前を指定
With xObjOLE
'縦と横のサイズ
.Height = 84.75
.Width = 127.5
'位置
.Top = topPosition
.Left = leftPosition
'名前
.Name = "QRコード1"
End With
'後片付け
Set xObjOLE = Nothing
End Sub
上記を実行すると、QRコードが作成されます。
作成したQRコードをスマホで読み取ったところ、設定したURLへアクセスできました!
VBAコード(QRコードの削除)
VBAで作成したQRコードは、手動では削除できないようです。
※手動で削除する方法を見つけることができませんでした。
※私には見つけることができなかっただけです。存在はするかもです。
※私の環境(Windows10、Excel2019)では手動で削除できませんでした。
※環境によっては手動で削除できるようです(削除できたというご連絡をいただきました)。
手動では削除できないため、VBAでQRコードを削除する方法を記載します。
ここでは例として、
・シート上にある「OLEObjectオブジェクト」の数だけ繰り返し処理をして
・「QRコード(=11)」かつ名前が「QRコード1」の場合は削除
します。
Option Explicit
Sub deleteQRCode()
Dim ws As Worksheet
Dim xObjOLE As OLEObject
'QRコードがあるシートを指定
Set ws = Worksheets("sample")
'指定シート上にある「OLEObjectオブジェクト」の数だけ繰り返し
For Each xObjOLE In ws.OLEObjects
'「QRコード(=11)」かつ名前が「QRコード1」の場合は削除
If xObjOLE.Object.Style = 11 And xObjOLE.Name = "QRコード1" Then
xObjOLE.Delete
End If
Next
End Sub
上記を実行すると、先ほど作成したQRコードが削除されます。
参考①
QRコードの作成を含め、「VBAでこんなことができるの!?」な記事をまとめました。
詳細は以下の記事をご確認ください。
参考②
上記のVBAコードで使用した以下の詳細は、公式サイトをご確認ください。
●「OLEObjectsオブジェクト」の「Add」メソッド
「OLEObjectオブジェクト」を追加します。
●「OLEObjectオブジェクト」
●「OLEObjectオブジェクト」の「Object」の「Style」や「Value」
どうやら内容が古いようです。参考までに。