ExcelでQRコードを 作成する方法! VBAで一括生成も!

ExcelでQRコードを作成したいときはないでしょうか。

けど、そんな中で悩むことは、

・ExcelでQRコードを作成したいが方法がよくわからない
・VBAでQRコードを一括作成ししたいが方法がよくわからない

ですよね。

今回はそんなお悩みを解決する

・ExcelでQRコードを作成する方法
・VBAでQRコードを一括作成する方法

についてまとめます!

ExcelでQRコードを作成するイメージ

ExcelでQRコードを作成するイメージについて説明をします。

まずは標準機能でExcelのシートから手動でバーコードを挿入していきます。

バーコードを設置できたら手動でバーコードの種類(QRコード)を変更したり、値を設定したりします。

次にVBAでバーコードを一括で作成していきます。

値をA列に設定し、バーコードのサイズはB列の縦横の幅に自動調整するようにします。

一括でバーコードが作成できると便利ですよね!

早速試してみましょう。

QRコードについて

QRコードとは

QRコードは Quick Response の頭文字で、高速読み取りを目的としたコードです。
自動車部品メーカーのデンソーが開発しました。
英数字、記号、漢字、かな、など1000文字以上記録することが可能です。
誤り訂正ができるので、コードに汚れや欠損があってもある程度は文字の読み取りが可能です。
最近ではURL記録用途でよく使われています。

手動でQRコードを作成する

手動でQRコードを作成する方法について説明をします。

Officeでは「Microsoft BarCode Control」というライブラリが用意されていて、それを使うことによりバーコードのオブジェクトを追加することができます。

タカヒロ
タカヒロ
Accessに含まれるライブライであるため、Accessを導入していない場合はExcelから見つから見つけることはできないことご注意ください。

QRコードを作成する

「開発」タブををクリックし、「挿入」>「コントロールの選択」ボタンをクリックします。

コントロールの選択ウインドウが表示されたら「Microsoft BarCode Control 16.0」を選択し「OK」をクリックします。

タカヒロ
タカヒロ
Microsoft BarCode Control のバージョンはOfficeのバージョンによって異なります。

バーコードを貼り付けたい箇所へドラッグし、同時にサイズを調整していきます。

タカヒロ
タカヒロ
QRコードは正方形サイズになるので、正方形になるよう調整をしましょう。Shiftキーを押しながらマウスをドラッグすると縦横比が同じ状態で調整ができます。

マウスをはなすとバーコードが生成されシートに表示されたら

再度選択し右クリックします。

「Microsoft BarCode Control 16.0オブジェクト」>「プロパティ」をクリックします。

スタイル「11-QRコード」を選択し、「OK」をクリックします。

次に、バーコードのコード(値)を設定していきます。

先ほど貼り付けたバーコードオブジェクトを右クリックします。

「プロパティ」ウインドウの「value」プロパティにバーコードの値を英数字混合文字列で入力します。
※サンプルは弊サイトのURLを値に指定しています。

バーコードの内容が変われば完成です。

タカヒロ
タカヒロ
スマホのQRコード読み取りアプリを使って実際に値が拾えるか確認するとよいでしょう。

VBAでQRコードを一括作成する

VBAでQRコードを一括作成する方法について説明をします。

今回は値をA列に設定し、バーコードのサイズはB列の縦横の幅に自動調整するようにします。

VBAコード

VBAは以下の通りです。

Sub バーコードを生成する()
    Dim intTop As Integer
    Dim intLeft As Integer
    Dim intWidth As Integer
    Dim intHeight As Integer
    Dim objBarCodeSetup As BarCodeCtrl
    Dim i As Integer
    
    'Excel表示シートのA列2行目以降にある値の件数分処理を繰り返します。
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        
        'B列セルの位置、サイズ情報を取得し変数へ代入します。
        With Cells(i, 2)
            intTop = .Top 'セル上部の位置
            intLeft = .Left 'セル左側の位置
            intWidth = .Width 'セル幅のサイズ
            intHeight = .Height 'セル高さのサイズ
        End With
        
        'BARCODE.BarCodeCtrlタイプのOLEオブジェクトを追加し、選択状態にします。
        ActiveSheet.OLEObjects.Add(ClassType:="BARCODE.BarCodeCtrl.1", _
            Link:=False, DisplayAsIcon:=False, _
            Left:=intLeft + 2, Top:=intTop + 2, Width:=intWidth - 2, Height:=intHeight - 2).Select
    
        '選択したバーコードオブジェクトをオブジェクトにセットします。
        Set objBarCodeSetup = Selection.Object
        
        'バーコード コントロールのプロパティを設定します。
        With objBarCodeSetup
            .Style = 11 '11はQRコードとなります。
            .Value = Cells(i, 1).Value  'A列の値をバーコードのValueプロパティへ設定します。
        End With

    Next
    
    'オブジェクトを解放します。
    Set objBarCodeSetup = Nothing

End Sub

VBAの設定

Excel表示シートのA列2行目からの指定となっていますが、行数を変更する場合は変数iの数値を変えてください。

For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row

バーコードの貼り付け先はB列となっていますが、C列など別の列にする場合はCellsの第二引数を変更してください。C列の場合は3、D列は4を指定します。

With Cells(i, 2)

VBAの実装

VBAの実装方法については
VBAの実装手順
をご参照ください。

VBAを実行

VBAを実行しましょう。

はい、B列にQRコードのバーコードが一括で作成されましたね!

値も反映されています!

VBAの説明

VBAについて説明をします。

Excel表示シートのA列2行目以降にある値の件数分処理を繰り返します。

For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row

B列セルの位置、サイズ情報を取得し変数へ代入します。

With Cells(i, 2)
intTop = .Top 'セル上部の位置
intLeft = .Left 'セル左側の位置
intWidth = .Width 'セル幅のサイズ
intHeight = .Height 'セル高さのサイズ
End With

BARCODE.BarCodeCtrlタイプのOLEオブジェクトを追加し、選択状態にします。
バーコードの貼り付け位置とサイズは先ほどのセルの情報をベースに設定します。

ActiveSheet.OLEObjects.Add(ClassType:="BARCODE.BarCodeCtrl.1", _
Link:=False, DisplayAsIcon:=False, _
Left:=intLeft + 2, Top:=intTop + 2, Width:=intWidth - 2, Height:=intHeight - 2).Select

タカヒロ
タカヒロ
バーコードのサイズはセルサイズより若干小さくなるようにしています。

選択したバーコードオブジェクトをオブジェクトにセットします。

Set objBarCodeSetup = Selection.Object

バーコード コントロールのプロパティを設定します。

With objBarCodeSetup
.Style = 5 '5は5 - QRコードとなります。
.Value = Cells(i, 1).Value 'A列の値をバーコードのValueプロパティへ設定します。
End With

Styleプロパティはバーコード シンボルのスタイルを指定するプロパティとなりますので、以下の表を参考に設定したいスタイルを指定します。
今回はQRコードなので11を指定します。

バーコード コントロールStyle プロパティ一覧

Style 説明
0 – UPC-A 商品のマーキングに広く使用されている POS シンボルです (米国とカナダ)。
1 – UPC-E UPC の短縮バージョンです。標準バージョンのシンボルが印刷できないような小さい商品に使用します。
2 -JAN-13 国際的な規格の POS シンボルです。書籍や雑誌などを含め、すべての商品に使用します。
3 – JAN-8 JAN の短縮バージョンです。標準バージョンのシンボルが印刷できないような小さい商品に使用します。
4 – Casecode 製造会社や卸し売り会社が小売り店に商品を出荷するとき、梱包箱の外側に表示するシンボルです。
5 – NW-7 英数字を表すことができるバーコード シンボルです。コンピュータ機器など、特殊な商品のパッケージに表示します。
6 – Code-39 英数字を表すことができるバーコード シンボルです。FA (Factory Automation) をはじめ、工業用として広く使用されています。
7 – Code-128 フル ASCII の 128 文字をコード化したバーコード シンボルです。
8 – US Postnet 処理を自動化するため、郵便物に表示するバーコード シンボルです (米国)。
9 – US Postal FIM 処理を自動化するため、郵便物に表示する特殊なバーコード シンボルです (米国)。
10 – カスタマバーコード 処理を自動化するため、郵便物に表示するバーコード シンボルです (日本)。
11 – QRコード QRバーコード シンボルです。

参考:https://docs.microsoft.com/ja-jp/previous-versions/office-development/cc427155(v=msdn.10)

Valueプロパティはバーコードのデータを指定するプロパティなので、セルの値を指定します。

その他のバーコード コントロールのプロパティは以下の通りです。

プロパティ 説明
Style バーコード シンボルのスタイルを指定します。
SubStyle さらに細かいスタイルを指定します。
Validation データの有効性を確認するかどうかを指定します。
LineWeight バーコード シンボルの線の太さを指定します。
Direction バーコード シンボルの表示方向を指定します。
ShowData 数値データを表示するかどうかを指定します。
ForeColor バーコード シンボルの前景色を指定します。
BackColor バーコード シンボルの背景色を指定します。
Value 作成するバーコード シンボルのデータを指定します。

参考:https://docs.microsoft.com/ja-jp/previous-versions/office-development/cc427149(v=msdn.10)?redirectedfrom=MSDN

オブジェクトを解放します。

Set objBarCodeSetup = Nothing

VBAの実装手順

実装手順は以下の通りです。

Excel側にVBAを実装していきます。

①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。

②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。

③右ペインのウインドウに上記のVBAを入力します。

こちらで完了です。

VBAを実行する

では早速VBAの実行をしてみましょう。

①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。

②処理がされたことが確認できれば完了です。

さいごに

いかがでしょうか。

今回は、

・ExcelでQRコードを作成する方法
・VBAでQRコードを一括作成する方法

についてまとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。








6 件のコメント

  • QRコードに記憶させるデータを漢字にすると、QRコードが作成できませんでした。
    漢字を記憶させることは可能でしょうか?

    • いつもご利用ありがとうございます。

      QRコードに記憶させるデータを漢字にするとQRコードが作成できない件につきまして、
      今回使用しているOfficeのバーコードジェネレータ”BARCODE.BarCodeCtrl.1″OLEオブジェクトが
      漢字をサポートしていないことが原因となります。
      ※QRコードの規格は漢字のエンコードもサポートしています。

      対処としては、”BARCODE.BarCodeCtrl.1″を使う前提ですと、漢字の文字列のまま変換することは難しく、
      例えばURLエンコードを行うなどして漢字を半角英数字に変換する対応が必要になります。

      エクセルに入力した漢字文字列をURLエンコードする方法については以下の記事にまとめていますので、
      よろしければご参考ください。

      https://extan.jp/?p=5309

  • こんにちは
    大変勉強になりましてものすごく感謝しております。
    一点教えて頂きたいのですが、QRコードが隣接していてリーダーで狙いずらい場合QRコードの配置を1列目はB、2列目は離した例えばE、3列目は元に戻りBに配置のように奇数列はBに配置、偶数列はEに配置のようにすることは可能でしょうか?

    • いつもご利用ありがとうございます。

      ご質問のQRコードを偶数/奇数行(列を行として読み替えました)で配置する列を変える件につきまして、
      対応可能としております。
      以下のようにコードを変更し検証いただけますでしょうか。

      ■変更前

      ‘B列セルの位置、サイズ情報を取得し変数へ代入します。
      With Cells(i, 2)
      intTop = .Top ‘セル上部の位置
      intLeft = .Left ‘セル左側の位置
      intWidth = .Width ‘セル幅のサイズ
      intHeight = .Height ‘セル高さのサイズ
      End With

      ■変更後
      If i Mod 2 = 0 Then
      ‘偶数行の場合B列セルの位置、サイズ情報を取得し変数へ代入します。
      With Cells(i, 2)
      intTop = .Top ‘セル上部の位置
      intLeft = .Left ‘セル左側の位置
      intWidth = .Width ‘セル幅のサイズ
      intHeight = .Height ‘セル高さのサイズ
      End With
      Else
      ‘奇数行の場合E列セルの位置、サイズ情報を取得し変数へ代入します。
      With Cells(i, 5)
      intTop = .Top ‘セル上部の位置
      intLeft = .Left ‘セル左側の位置
      intWidth = .Width ‘セル幅のサイズ
      intHeight = .Height ‘セル高さのサイズ
      End With
      End If

  • 簡単に大量にQRコードが作成でき、大変ありがたいです。
    一つ質問ですが、
    作成したQRコードは一切動かせません。
    一部を個々に修正したい場合はどうすれば良いでしょうか?

    • いつもご利用ありがとうございます。

      作成したQRコードを修正する件につきまして、公開しているマクロは更新機能を設けておりませんので、
      お手数ですが、新規作成を行い、既存のQRコードと差し替えていただきたくお願いいたします。

  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です