課題・悩み「Excelのデータから複数のQRコードを一括で作成したい」
解決策「ボタン1つでできる、Excelのデータから複数のQRコードを一括作成するVBAマクロ」を解説
「ExcelでQRコードを作成するのに、Excelのデータから1つ1つQRコードを作成していると時間がかかる…」
ExcelのVBAマクロを使えば、Excelのセルのデータから複数のQRコードを一気に作成できます。
【Excelのセルに入力されているデータからQRコードを一括で作成する】VBAマクロを解説しています。
ボタン1つでExcelのデータからQRコードを作成できるVBAマクロファイルは以下のボタンよりダウンロードできます。
QRコード作成マクロファイルの使い方
ダウンロードできる【QRコード作成マクロファイル】の使い方は以下の通りです。
QRコード作成マクロファイルの使い方
- Excelにデータを入力
- 【QRコードを作成する】のボタンをクリック
- 【QRコードを削除する】のボタンをクリック
Excelにデータを入力
【QRコード作成マクロファイル】のQRコードシートのC列に、QRコードに設定したいデータを入力します。
【QRコードを作成する】のボタンをクリック
【QRコードを作成する】のボタンをクリックすると、QRコードシートのB列にQRコードが作成されます。
【QRコードを削除する】のボタンをクリック
【QRコードを削除する】のボタンをクリックすると、QRコードシートのQRコードがすべて削除されます。
Excel VBAでQRコードを作成するときの設定
Excel VBAでQRコードを作成するには、【Microsoft BarCode Control】というライブラリを利用します。
Microsoft BarCode Controlのインストール
Microsoft BarCode Controlのインストール方法は、以下の記事をご覧ください。
Microsoft BarCode Controlの設定
Microsoft BarCode Controlは参照設定をしないと利用できません。
【開発】タブ→【Visual Basic】をクリックします。
【ツール】タブ→【参照設定】をクリックします。
【Microsoft Access BarCode Control 16.0】にチェック☑を入れて、【OK】をクリックします。
ExcelのQRコードを実務に利用し業務効率化する例
ExcelでQRコードを作成することで、業務を効率化することができます。
ExcelのQRコードを実務に利用し業務効率化する例
- 在庫管理・棚卸
在庫管理・棚卸
例えば、在庫にQRコードを貼りつけて管理することで、実地棚卸の作業が効率化できます。
詳しくは以下の投稿をご覧ください。
Excel VBAでQRコードを作成するときのQ&A
- Excelで大量のQRコードを一括生成するために使用できるVBAはありますか?
-
BARCODE.BarCodeCtrlを用いることで、Excel VBAでQRコードを一括生成可能です。具体的なコードは以下に記載しています。
- QRコード生成ライブラリやアドオンを使用することは可能ですか?
- Excelの特定のセル値に基づいてQRコードを作成する方法はありますか?
-
Excelでは特定のセル値に基づいてQRコードを作成することが可能です。詳しくは以下の記事をご覧ください。
- QRコードを表示するためにVBAコードを使用する方法を教えてください。
- ExcelでQRコードのサイズを調整する方法はありますか?
-
ExcelでQRコードのサイズを調整する方法は2種類あります。1つ目はオブジェクトのサイズで変更する方法と2つ目はVBAのコードで設定する方法です。
- ExcelやWordを使用してQRコードを作成するために有償のソフトウェアを使用する必要がありますか?
-
ExcelでQRコードを作成するには、Accessの機能であるMicrosoft BarCode Controlが必要です。 Microsoft BarCode Controlは無料でダウンロード可能です。
- Excelの標準出力方法で日本語を埋め込んだQRコードを作成する方法を教えてください。
-
値の設定時に日本語を入力することで、日本語を埋め込んだQRコードを作成することが可能です。
ExcelのデータからQRコードを一括で作成するVBAマクロのコード
このコードはExcelのVBAを用いて、指定したワークシート(“QRコード”)にあるC列の各セルのデータを用いて、B列の各セルに対応するQRコードを生成するものです。
QRコードの生成にはOLEオブジェクトとしてBARCODE.BarCodeCtrlを使用しています。
QRコードはセルの高さと幅の小さい方の値を一辺の長さとする正方形として表示されます。
処理が終わったらワークシート(“QRコード”)を表示します。
Sub QRコードを生成する()
' 変数宣言
Dim intTop As Long
Dim intLeft As Long
Dim intSize As Long ' QRコードのサイズ(正方形の辺の長さ)
Dim objBarCodeSetup As BarCodeCtrl
Dim i As Long
Dim ws As Worksheet
' エラー処理
On Error GoTo ErrorHandler
' スクリーンアップデートを無効化
Application.ScreenUpdating = False
' ワークシート設定
Set ws = ThisWorkbook.Sheets("QRコード")
' C列2行目以降の値を処理
For i = 2 To ws.Cells(Rows.Count, 3).End(xlUp).Row
' B列セルの位置、サイズ情報を取得
With ws.Cells(i, 2)
intTop = .Top
intLeft = .Left
' セルの高さと幅の小さい方をQRコードのサイズとする
intSize = WorksheetFunction.Min(.Width, .Height)
End With
' BARCODE.BarCodeCtrlタイプのOLEオブジェクトを追加
Set objBarCodeSetup = ws.OLEObjects.Add(ClassType:="BARCODE.BarCodeCtrl.1", _
Link:=False, DisplayAsIcon:=False, _
Left:=intLeft + 2, Top:=intTop + 2, Width:=intSize - 2, Height:=intSize - 2).Object
' バーコードコントロールのプロパティ設定
With objBarCodeSetup
.Style = 11 ' QRコード
.Value = ws.Cells(i, 3).Value ' C列の値をValueプロパティに設定
End With
Next
' オブジェクト解放
Set objBarCodeSetup = Nothing
' スクリーンアップデートを有効化
Application.ScreenUpdating = True
' Sheet1を表示
ws.Activate
Exit Sub
ErrorHandler: ' エラーハンドリング
' エラーメッセージ表示
MsgBox "エラーが発生しました。" & vbCrLf & Err.Description, vbCritical, "エラー"
' スクリーンアップデートを有効化
Application.ScreenUpdating = True
' Sheet1を表示
ws.Activate
End Sub
ExcelのデータからQRコードを一括で作成するVBAマクロのコード
- VBAマクロ実行時の注意点
- VBAマクロを実行するための環境
- 各コードの解説
VBAマクロ実行時の注意点
データが大量にある場合や、システムの性能が低い場合には、QRコードの生成に時間がかかる可能性があります。
また、生成されるQRコードの数や大きさによっては、Excelの描画性能の限界を超える可能性もあります。
そのため、一度に大量のQRコードを生成する場合には注意が必要です。
VBAマクロを実行するための環境
このコードを正常に動作させるためには、QRコード生成用のActiveXコントロール “BARCODE.BarCodeCtrl.1” がシステムにインストールされている必要があります。
各コードの解説
各処理ごとにコードを解説していきます。
変数宣言
位置、サイズなどの情報を格納するための変数と、作業対象のワークシート、バーコード制御オブジェクトを宣言しています。
Dim intTop As Long
Dim intLeft As Long
Dim intSize As Long
Dim objBarCodeSetup As BarCodeCtrl
Dim i As Long
Dim ws As Worksheet
エラーハンドリング設定
エラーが発生した場合に特定の処理(エラーメッセージの表示とワークシートの表示)を行うための設定をしています。
On Error GoTo ErrorHandler
スクリーンアップデート無効化
処理中の画面のちらつきを防ぐため、スクリーンアップデートを一時的に無効にしています。
Application.ScreenUpdating = False
ワークシート設定
“QRコード”という名前のワークシートを作業対象として設定しています。
Set ws = ThisWorkbook.Sheets("QRコード")
QRコード生成
C列の各セルのデータを用いてB列の各セルに対応するQRコードを生成しています。QRコードはセルの高さと幅の小さい方の値を一辺の長さとする正方形として表示されます。
For i = 2 To ws.Cells(Rows.Count, 3).End(xlUp).Row
(この下に多数のコードが続く)
Next
オブジェクト解放
バーコード制御オブジェクトの解放を行っています。
Set objBarCodeSetup = Nothing
スクリーンアップデート有効化
処理終了後、スクリーンアップデートを再度有効にしています。
Application.ScreenUpdating = True
ワークシート表示
処理が終わったらワークシート(“QRコード”)を表示します。
ws.Activate
Excelで作成したQRコードを削除するVBAマクロのコード
このマクロは、Excelの特定のワークシート(この場合は「QRコード」)にある全てのQRコード(OLEオブジェクトとして挿入された)を削除するためのものです。コードはVBA (Visual Basic for Applications) で書かれており、Excelのマクロとして実行することができます。
Sub QRコードの一括削除()
' 変数宣言
Dim objBarCode As OLEObject
Dim i As Long
Dim ws As Worksheet
' Worksheetの指定
Set ws = ThisWorkbook.Sheets("QRコード")
' エラー処理
On Error GoTo ErrorHandler
' スクリーンアップデートを無効化
Application.ScreenUpdating = False
' BARCODE.BarCodeCtrlタイプのOLEオブジェクトを削除
For i = ws.OLEObjects.Count To 1 Step -1
Set objBarCode = ws.OLEObjects(i)
If TypeName(objBarCode.Object) = "BarCodeCtrl" Then
objBarCode.Delete
End If
Next i
' スクリーンアップデートを有効化
Application.ScreenUpdating = True
' 処理完了後にSheet1を表示
ws.Activate
Exit Sub
ErrorHandler: ' エラーハンドリング
' エラーメッセージ表示
MsgBox "エラーが発生しました。" & vbCrLf & Err.Description, vbCritical, "エラー"
' スクリーンアップデートを有効化
Application.ScreenUpdating = True
End Sub
Excelで作成したQRコードを削除するVBAマクロのコード
- VBAマクロ実行時の注意点
- VBAマクロを実行するための環境
- 各コードの解説
VBAマクロ実行時の注意点
ワークシートに大量のオブジェクトが存在する場合、処理に時間がかかる可能性があります。
このコードは、「QRコード」という名前のワークシートが存在することを前提としています。存在しない場合、エラーが発生します。
VBAマクロを実行するための環境
QRコードがBarCodeCtrlとして挿入されていることが前提となっています。他の方法でQRコードが挿入されている場合、このコードでは削除できません。
各コードの解説
各処理ごとにコードを解説していきます。
変数宣言
VBAに必要な変数を宣言しています。OLEObjectを操作するための変数objBarCode、ループ用のカウンターi、ワークシートを参照するための変数wsが宣言されています。
Dim objBarCode As OLEObject
Dim i As Long
Dim ws As Worksheet
ワークシートの指定
このマクロが作用するワークシートを指定します。この場合、「QRコード」という名前のシートを指定しています。
Set ws = ThisWorkbook.Sheets("QRコード")
エラー処理の準備
エラーが発生した場合に適切なエラーメッセージを表示し、スクリーンアップデートを再度有効化するためのエラーハンドラを設定します。
On Error GoTo ErrorHandler
スクリーンアップデートの無効化
大量のオブジェクトの削除等、画面更新に時間がかかる処理を高速化するため、スクリーンアップデートを一時的に無効化します。
Application.ScreenUpdating = False
QRコードの削除
ワークシートの全てのOLEオブジェクトを調べ、そのオブジェクトがQRコード(型が”BarCodeCtrl”)であれば削除します。
For i = ws.OLEObjects.Count To 1 Step -1
Set objBarCode = ws.OLEObjects(i)
If TypeName(objBarCode.Object) = "BarCodeCtrl" Then
objBarCode.Delete
End If
Next i
スクリーンアップデートの有効化
すべてのQRコードの削除が完了したので、スクリーンアップデートを再度有効化します。これにより、画面が更新され、変更がユーザーに表示されます。
Application.ScreenUpdating = True
ワークシートのアクティブ化
処理が完了した後、「QRコード」ワークシートをアクティブ(表示状態)にします。
ws.Activate
エラーハンドリング
エラーが発生した場合に適切なエラーメッセージを表示し、スクリーンアップデートを再度有効化します。
ErrorHandler:
MsgBox "エラーが発生しました。" & vbCrLf & Err.Description, vbCritical, "エラー"
Application.ScreenUpdating = True
コメント