【VBA】QRコードを作成する

VBAで
 ・QRコードを作成
できます!!

QRコード
QRコード


なお
 ・手動でQRコードを作成
できます!

手動で作成する方法は、
以下の記事をご確認ください!



PR

前提

「Access」または「Microsoft 365 Access ランタイム」がインストールされていないと、VBAでQRコードの作成が出来ないかもしれません。
※もしかしたら出来るかもしれません。未確認です。
※後述のVBAコードは、「Microsoft 365 Access ランタイム」がインストールされている状態で実行/確認しています。

「Microsoft 365 Access ランタイム」のダウンロード及びインストールについては、以下の記事の当該部分をご確認ください。

PR

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

「OLEObjectsオブジェクト」の「Add」メソッドで、「OLEObjectオブジェクト」を作成します。(14行目)

「OLEObjectオブジェクト」の「Object」の「Style」に、「QRコード(=11)」を指定します。(19行目)

「OLEObjectオブジェクト」の「Value」に、「QRコードを読み込んだ際のアクセス先となるURL」を指定します。(21行目)

「QRコードのサイズ」は、任意の値を指定してください。(33~34行目)
※上記では、手動でQRコードを作成した際のデフォルト(初期設定)のサイズである「縦:84.75」と「横:127.5」を指定しています。

後続のVBAコード「QRコードの削除」で「名前を指定したQRコードの削除」をできるようにするため、QRコードに「名前」を付けています。(39行目)


上記を実行すると、QRコードが作成されます。

作成されたQRコード
作成されたQRコード


作成したQRコードをスマホで読み取ったところ、設定したURLへアクセスできました!

QRコードをスマホで読み取った後の画面
QRコードをスマホで読み取った後の画面
QRコードを使用してスマホからWebサイトへアクセスした画面
QRコードを使用してスマホからWebサイトへアクセスした画面
PR

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コードが存在しない場合にエラーが発生してしまいます。
※エラーが発生する可能性をゼロにするために、上記の通り存在確認をした上で削除しています。


上記を実行すると、先ほど作成したQRコードが削除されます。

QRコードが削除された
QRコードが削除された
PR

参考①

QRコードの作成を含め、「VBAでこんなことができるの!?」な記事をまとめました。

詳細は以下の記事をご確認ください。

PR

参考②

上記のVBAコードで使用した以下の詳細は、公式サイトをご確認ください。

●「OLEObjectsオブジェクト」の「Add」メソッド
「OLEObjectオブジェクト」を追加します。



●「OLEObjectオブジェクト」


●「OLEObjectオブジェクト」の「Object」の「Style」「Value」
どうやら内容が古いようです。参考までに。

タイトルとURLをコピーしました