【Excel】エクセルでQRコードを作成する方法(関数・マクロ・複数セルのQRコード・作成できない原因と対処法も)
エクセルでQRコードを作りたいけれど、どのような方法があるのかわからない。そんな疑問をお持ちの方に向けて、本記事ではエクセルでQRコードを作成するさまざまな方法をわかりやすく解説します。
エクセルには標準のQRコード生成機能は備わっていませんが、外部APIの活用・VBAマクロ・アドインなどを使うことでQRコードを作成することが可能です。複数セルのデータからQRコードを一括生成する方法や、作成できない場合の対処法についても触れていきます。
IMAGE関数・WEBSERVICE関数を使ってQRコードを作成する方法
それではまず、エクセルの関数を使ってQRコードを作成する方法について解説していきます。
IMAGE関数でQRコードを表示する(Microsoft 365)
Microsoft 365のエクセルにはIMAGE関数が搭載されており、WebサービスのQRコード生成URLを指定することでセル内に直接QRコードを表示させることができます。
=IMAGE(“https://api.qrserver.com/v1/create-qr-code/?data=”&A1&”&size=150×150”)
→ A1セルの値をもとにQRコード画像をセルに表示する
この方法はインターネット接続が必要ですが、セルの値を変更するだけでQRコードが自動更新される点が大きなメリットです。
WEBSERVICE関数との組み合わせ(旧バージョン対応)
IMAGE関数が使えない旧バージョンのエクセルでは、WEBSERVICE関数とENCODEURL関数を組み合わせてAPIを呼び出す方法があります。ただし、WEBSERVICE関数はQRコード画像の直接表示には対応していないため、URLの生成補助として使用します。
=WEBSERVICE(“https://api.qrserver.com/v1/create-qr-code/?data=”&ENCODEURL(A1))
→ A1の値をURLエンコードしてAPIに渡す
IMAGE関数が使えない場合の代替方法
IMAGE関数はMicrosoft 365でのみ利用可能なため、永続ライセンス版(Excel 2019・2021など)では使用できません。その場合はVBAマクロやアドインを使う方法を選択しましょう。
VBAマクロでQRコードを自動生成する方法
続いては、VBAマクロを使ってQRコードを自動生成する方法を確認していきます。
VBAでQRコード生成APIから画像を取得して貼り付けるコード
VBAのHTTPリクエスト機能を使ってQRコード生成APIから画像を取得し、エクセルシートに貼り付けることができます。
Sub InsertQRCode()
Dim url As String
Dim filePath As String
url = “https://api.qrserver.com/v1/create-qr-code/?data=” & _
WorksheetFunction.EncodeURL(Range(“A1”).Value) & “&size=150×150”
filePath = Environ(“TEMP”) & “\qrcode.png”
Dim http As Object
Set http = CreateObject(“MSXML2.XMLHTTP”)
http.Open “GET”, url, False
http.Send
Dim stream As Object
Set stream = CreateObject(“ADODB.Stream”)
stream.Type = 1
stream.Open
stream.Write http.responseBody
stream.SaveToFile filePath, 2
stream.Close
ActiveSheet.Pictures.Insert(filePath).Select
End Sub
このマクロはA1セルの値を元にQRコード画像をダウンロードし、シートに貼り付けるものです。インターネット接続環境が必要となります。
複数セルのデータからQRコードを一括生成する方法
複数のセルに入力されたURLや文字列から、QRコードをまとめて生成したい場合はループ処理を追加します。
Sub BulkQRCode()
Dim i As Integer
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To lastRow
Dim url As String
url = “https://api.qrserver.com/v1/create-qr-code/?data=” & _
WorksheetFunction.EncodeURL(Cells(i, 1).Value) & “&size=100×100”
Dim filePath As String
filePath = Environ(“TEMP”) & “\qr_” & i & “.png”
’(HTTPリクエストと保存処理を各行に適用)
Cells(i, 2).Select
ActiveSheet.Pictures.Insert(filePath).Select
Next i
End Sub
A列のデータ件数分だけ繰り返し処理が行われ、B列にQRコード画像が順番に貼り付けられます。
QRコードのサイズ・エラー訂正レベルの設定方法
QRコード生成APIではURLパラメータでQRコードのサイズやエラー訂正レベルを指定できます。
| パラメータ | 内容 | 指定例 |
|---|---|---|
| size | 画像サイズ(ピクセル) | size=200×200 |
| ecc | エラー訂正レベル | ecc=H(最高)/ M / Q / L |
| color | バーの色(16進数) | color=000000 |
| bgcolor | 背景色(16進数) | bgcolor=ffffff |
QRコードが作成できない原因と対処法
続いては、QRコードが作成できない・表示されない場合の原因と対処法を確認していきます。
IMAGE関数でQRコードが表示されない場合
IMAGE関数を入力してもQRコードが表示されない原因として、以下が考えられます。
原因1:インターネット接続が切れている → ネットワーク接続を確認する
原因2:APIのURLが正しくない → URLと埋め込む値を再確認する
原因3:Microsoft 365以外のバージョンを使用している → VBAマクロに切り替える
原因4:セキュリティ設定で外部URLへのアクセスが制限されている → トラストセンターの設定を確認する
VBAマクロでエラーが発生する場合の対処法
VBAマクロ実行時に「実行時エラー」が発生する場合は、MSXML2.XMLHTTPオブジェクトが利用可能かどうかを確認しましょう。また、ファイルの保存先パスが存在しない場合もエラーになります。Environ(“TEMP”)で取得した一時フォルダへの書き込み権限も確認してください。
QRコードが読み取れない場合の確認ポイント
生成したQRコードがスマートフォンで読み取れない場合は、以下の点を確認しましょう。
QRコードの読み取り失敗の主な原因は、サイズが小さすぎること(最低2cm×2cm以上推奨)、印刷解像度が低いこと、余白(クワイエットゾーン)が不足していることの3点です。特に印刷して使用する場合はこれらを必ず確認してください。
まとめ
本記事では、【Excel】エクセルでQRコードを作成する方法として、IMAGE関数・VBAマクロ・複数セルの一括生成・作成できない場合の対処法まで幅広く解説しました。
Microsoft 365ユーザーであればIMAGE関数を使った方法が最もシンプルで動的な更新にも対応しています。旧バージョンのエクセルを使用している場合はVBAマクロでの実装をご検討ください。QRコードを活用することで、URLの共有や在庫管理など業務の幅がさらに広がるでしょう。