QRコードで閉域環境のデータ転送!
ネットワーク不要・紙だけでExcelデータを別PCに移す
ExcelでQRコードを作成し、QRリーダーやバーコードリーダーで読み取って、Excel入力・Webシステム入力・業務システム入力を自動化したい場面を想定しています。
↵ Enter / Tab の共通整理
QR入力では、読み取り先によって最初に試す制御を分けます。Num Enter は Excel の CHAR 関数では生成できないため、必要な場合はQRリーダー側のキー変換で確認します。
| 用途 | まず試すもの | 備考 |
|---|---|---|
| Excelで次行へ移動 | CHAR(10) | ExcelのEnter移動設定やリーダーのサフィックスに依存します。 |
| Webフォームの確定・検索 | CHAR(13) | 画面ごとに差があるため、検証画面で確認します。 |
| 基幹系の確定 | Num Enter | CHAR関数では生成できません。QRリーダー側のキー変換が必要です。 |
| Tab移動 | CHAR(9) | 多くのExcel/Webフォームで安定しやすい制御です。 |
本記事の具体的な設定バーコードと検証結果は、オプトエレクトロニクス社の OPI-3601、ALX-3601(互換品)、L-46X の3機種を中心にしています。サフィックスOFF、キャラクタ間ディレイ、制御文字のキー変換は Zebra や Honeywell など主要メーカーでも対応できる場合がありますが、設定名・設定ツール・紙バーコードで復元できる範囲はメーカーごとに異なります。他メーカーで実施する場合は、本記事のバーコードをそのまま使わず、各メーカーのマニュアル、123Scan、EZConfig などで同等設定を作ってください。
🔑 最初に ―「全角文字が使えないなら意味がない」と思った方へ
閉域環境でのQR転送を検討するとき、多くの方がまず気になるのは「日本語(全角文字)は転送できるのか?」でしょう。結論から言います。
QRコード自体は日本語(漢字・ひらがな・カタカナ)を格納できます。問題は「どうやってQRを生成するか」だけです。Excelのバーコードコントロール(ActiveX)では半角しか扱えませんが、VBAで自力生成する設計は可能です(完成コードは記事⑪で後日公開検討)。
閉域環境での現実的な選択肢
閉域環境ではインターネットに接続できないため、外部ライブラリ(Pythonのqrcodeモジュール等)を後からインストールすることが困難です。そのため、VBA標準機能だけでQRコードを自力生成する設計が候補になります。ただし実装難度は高く、記事⑪では現時点で設計メモとして整理しています。
| QR生成方法 | 全角 | 外部ライブラリ | 閉域環境 | 難易度 | 解説 |
|---|---|---|---|---|---|
| バーコードコントロール(ActiveX) | ✕ | 不要 | ○ | ★☆☆ | 本記事 |
| VBA標準機能のみで自力生成 (ADODB.Stream+リード・ソロモン符号+セル描画) |
○ | 不要 | ○ 最適 | ★★★ | 記事⑪ 設計メモ |
| VBA+外部DLL/ライブラリ | ○ | 必要 | △ 事前持込要 | ★★☆ | 記事⑪ 設計メモ |
| Python(qrcode等) | ○ | 必要 | ✕ 導入困難 | ★★☆ | 記事⑪ 設計メモ |
Windowsに最初から入っている ADODB.Stream でUTF-8変換し、VBAでリード・ソロモン符号(誤り訂正)やQRマトリクスの構築を自力で計算し、Excelのセル塗りつぶしでQRコードを描画する考え方です。DLLもネット接続も不要で、閉域環境のPCにExcelさえあれば動かせる可能性があります。ただし実装は高難度です(ガロア体の多項式演算、ジグザグのデータ埋め込み、マスクパターン最適化など)。記事⑪では設計メモとして整理しています。
ただし、全角QRの「読み取り」にも制約があります。一般的なQRリーダーのキーボードエミュレーション(USB HID)モードでは全角文字を正しくExcelに入力できない機種が多く存在します(※OPI-3601等の一部機種は「漢字直接出力」に対応していますが、標準設定では文字化けするリーダーが多数派です)。全角データの受信にはUSB COMモード(シリアル通信)+受信側VBAが必要で、送信側・受信側ともにVBAが動く環境であることが前提になります。
本記事の位置づけ
以上を踏まえ、本記事ではバーコードコントロール(半角のみ)+ キーボードエミュレーション方式での閉域転送手順を解説します。ただしバーコードコントロールはExcel単体の標準機能ではなく、主にAccessに同梱されるActiveXコントロールです。送信側PCにAccess、または同コントロールを含むOffice構成が入っていない場合、Excelの一覧に表示されません。加えて2026年現在、Microsoft 365 / Office 2024では初期設定でActiveXが表示・作成できないことがありますが、トラストセンター設定で許可すると表示できる場合もあります。職場PCでは管理者ポリシーでブロックされることもあるため、まず設定と一覧を確認してください。
全角文字を含むデータを転送したい場合は、先に記事⑪「全角QR生成の設計メモ」をお読みください。
自分のデータはどちらに該当する?
| データの例 | 文字種 | 本記事 | 記事⑪ |
|---|---|---|---|
| PRD-001, 50, A-12, 2026-04-17 | 半角のみ | ○ | ○ |
| SN-20250401-0023, 12.45, OK | 半角のみ | ○ | ○ |
| 192.168.1.100, ERR-0042 | 半角のみ | ○ | ○ |
| 山田太郎, 品質管理課, 東京都… | 全角あり | ✕ | ○ |
| ステンレスボルト M8, 納品時要連絡 | 全角あり | ✕ | ○ |
日本の業務データの多くは全角文字を含みます。半角のみで完結するデータ(コード・数値・日付だけの管理台帳等)であれば本記事の方法がシンプルで最適ですが、そうでなければ記事⑪の設計メモを確認してください。半角列のみQRで転送し、全角列は受信側でVLOOKUP等のマスタ参照で補完するという折衷案も有効です。
💡 この記事の目的
記事①〜⑦では1台のPC上でQRリーダーを使い、業務入力を自動化しました。しかし現場には「ネットワークに繋がっていないPC同士でデータを受け渡したい」という要望が数多くあります。
セキュリティポリシーでUSBメモリ禁止、インターネット接続なし、メール不可――そんな閉域環境でも、QRコードを紙に印刷して物理的に持ち運べばデータ転送が可能です。本記事では半角文字のみで構成されるデータを対象に、バーコードコントロールを使った全手順を解説します。
- 閉域環境でのQR転送の仕組み:なぜ紙+QRコードで転送できるのか
- 送信側の数式設計:Tab/Enter埋め込み → TEXTJOIN連結 → MID分割
- QR生成・印刷レイアウト:通し番号・ヘッダー情報・推奨サイズを含む印刷設計
- 受信側のリーダー読み取り:OPI-3601・ALX-3601・L-46Xでの読み取り手順と設定
- セキュリティ考慮:紙=物理的なデータ持ち出しであることの運用ルール
転送の全体像 ― 送信 → 紙 → 受信の3フェーズ
Excel → QR文字列 → QR生成 → 印刷
QR-001〜QR-021(通し番号付き)
QRリーダー → Excelに自動入力
| フェーズ | 場所 | やること | 使うもの |
|---|---|---|---|
| ① 送信 | 送信側PC | ExcelデータをQR文字列に変換し、バーコードコントロールでQRコードを生成・印刷する | Excel+Access由来のバーコードコントロール+プリンター |
| ② 運搬 | 物理移動 | 印刷した紙を受信側PCのある場所へ持っていく | A4用紙(QR印刷済み) |
| ③ 受信 | 受信側PC | QRリーダーで紙を順番に読み取り、Excelに自動入力する | Excel + QRリーダー(OPI-3601 / ALX-3601 / L-46X) |
1枚のQRコードに収まるデータ量はバーコードコントロール使用時で半角255文字。複数QRに分割すれば数百〜数千件のデータも転送できます。ネットワーク接続やUSBメモリは不要ですが、送信側PCで Microsoft Barcode Control が表示され、ActiveXの利用が許可されていることが前提です。
閉域環境とは? ― なぜQR転送が必要になるのか
| 制約 | 具体例 | 従来の対処法 | 問題点 |
|---|---|---|---|
| ネットワーク不可 | 工場制御系PC、機密端末 | 手入力・紙の転記 | ミス多発・時間がかかる |
| USBメモリ禁止 | 金融機関、官公庁 | 承認申請 → 一時許可 | 数日〜数週間待ち |
| メール/クラウド不可 | 医療機関、防衛関連 | CD-R焼き・FAX | 手間・画質劣化 |
| 専用ソフト導入不可 | 資産管理でインストール制限 | IT部門に依頼 | 導入まで数ヶ月 |
QRコード転送はこれらすべての制約をクリアします。必要なのは送信側のExcel+Access由来のバーコードコントロール、プリンター、受信側のExcel、QRリーダーです。Excelだけしか入っていない送信側PCではバーコードコントロールが表示されない場合があります。Microsoft 365 / Office 2024環境では、ActiveX設定を確認し、必要に応じて許可できるか確認してください。
前提条件の確認
| 前提 | 内容 | 参照記事 |
|---|---|---|
| QR生成方法 | バーコードコントロール(ActiveX)でQRコードを生成できること | ① |
| Tab/Enter埋め込み | CHAR(9)でTab、CHAR(13)でEnterを埋め込む数式を理解していること | ② |
| サフィックス設定 | リーダーのサフィックスをNone(なし)に設定済み | ② |
| キャラクタ間ディレイ | 5〜20ms に設定済み(大量文字の文字抜け防止) | ③ |
| 半角文字制限 | バーコードコントロールは半角文字のみQRに変換可能(全角は記事⑪で設計方針を確認) | ⑧⑪ |
バーコードコントロール(ActiveX)は半角英数字・半角記号(ASCII範囲)のみ正しくQRに変換できます。全角を含むデータを転送したい場合は、記事⑪の設計メモを確認してください。完全版コードは後日公開検討のため、実運用では十分な検証が必要です。
受信側リーダーの推奨設定(OPI-3601 / ALX-3601 / L-46X)
| 設定項目 | 推奨値 | メニューバーコード | 理由 |
|---|---|---|---|
| サフィックス | なし(None) | SET → RY → END | QR内のCHAR(13)で改行するため、リーダー側のEnter付加は不要 |
| キャラクタ間ディレイ | 5〜10ms | SET → LB → END | 255文字の高速送信で文字抜け防止。閉域転送はデータ量が多いので軽めが望ましい |
| キーボード言語 | 日本語(PM) | SET → PM → END | 記号の文字化け防止 |
| 読み取りモード | マニュアルトリガ | (通常デフォルト) | 1枚ずつ確認しながら読み取るため |
通常の業務入力(記事③)ではディレイ20msを推奨していますが、閉域転送ではQR1枚あたり最大255文字を一括送信するため、ディレイが大きいと1枚の読み取りに 255 × 20ms = 約5秒 かかります。受信側PCのスペックに余裕があれば5msに下げると 255 × 5ms = 約1.3秒 で高速転送できます。文字抜けが発生する場合のみ値を上げてください。
送信側:ExcelデータをQR文字列に変換する
転送したいデータの構造を確認します。以下は在庫データの例です。
| A列:商品コード | B列:数量 | C列:棚番号 | D列:日付 | |
|---|---|---|---|---|
| 2 | PRD-001 | 50 | A-12 | 2026-04-17 |
| 3 | PRD-002 | 120 | B-03 | 2026-04-17 |
| 4 | PRD-003 | 30 | C-07 | 2026-04-17 |
- 転送データが半角文字のみであることを確認(全角がある場合は記事⑪へ)
- 列数と列の順番を確認(受信側と同じ構造にする)
- 1レコードあたりの文字数を概算(上記例は約35文字/件)
データに全角文字が混入していないか一括チェックできます。
=IF(SUMPRODUCT((LEN(A2:D151)*2-LENB(A2:D151)))<>0,"⚠ 全角あり→記事⑪","✓ 半角のみ→本記事でOK")
各レコードをTab区切り+Enter末尾の文字列に変換します。
=A2 & CHAR(9) & B2 & CHAR(9) & C2 & CHAR(9) & D2 & CHAR(13)
E2セルには PRD-001[TAB]50[TAB]A-12[TAB]2026-04-17[ENTER] が格納されます。
- E2に数式を入力し、E列の最終行までコピー
- =LEN(E2) で1レコードの文字数を確認
=TEXTJOIN("", TRUE, E2:E151)
& で連結する、または件数を小分けにして & CHAR(9) & を使う方式に切り替えてください。
150レコード × 35文字 = 約5,250文字の長い文字列がF1に格納されます。
- F1にTEXTJOIN数式を入力
- =LEN(F1) で全体の文字数を確認
=IF((ROW()-1)*255+1 > LEN($F$1), "", MID($F$1, (ROW()-1)*255+1, 255))
G1セルに入力し、下方向に十分な行数コピーします。必要QR枚数は次の数式で算出できます。
=ROUNDUP(LEN(F1)/255, 0)
5,250文字なら 21枚(A4用紙3枚程度)です。
- G1に数式を入力し、30行程度にコピー
- 空白行が出た時点で分割完了(それ以降のQRは不要)
- 各G列セルの文字数が255以下であることを確認
MID関数で機械的に255文字で切ると、1レコードの途中で分割される場合があります。受信側ではQRを通し番号順に連続読み取りするため、途中で切れても前のQRの続きとして自動連結され、結果として正しく入力されます。ただし実運用では必ずテスト読み取りで確認してください。
=IF(G1="", "", "QR-" & TEXT(ROW(), "000"))
- H列に通し番号を生成
- 通し番号は読み取り順序管理に必須
QRを読み取る順序を間違えるとデータの並びが崩壊します。各QRの横に大きく番号を印刷してください。
QRコードの生成と印刷レイアウト
記事①で設定したバーコードコントロール(Style = 11: QR Code)のLinkedCellをG1, G2, G3… と切り替えてQRコードを生成します。
| 項目 | 推奨値 | 理由 |
|---|---|---|
| QRサイズ | 3cm × 3cm 以上 | OPI-3601/ALX-3601の読み取り距離で確実に読める最低サイズ |
| 1ページあたりQR数 | 6〜8枚(A4縦) | 余白・通し番号ラベルのスペース確保 |
| 通し番号 | QR-001, QR-002, … | 読み取り順序の管理に必須 |
| ヘッダー情報 | 転送日・総件数・ページ番号・送信者名 | 受信側での照合・証跡として |
| 印刷品質 | 600dpi以上 | QRの細かいモジュール(ドット)を正確に再現するため |
| 用紙 | 普通紙(白) | 光沢紙は反射で読み取りにくい場合がある |
L-46Xは最大100fpsの高速撮像と30万画素CMOSセンサを搭載しているため、QRサイズが2cm×2cm程度の小さいコードでも安定して読み取れます。A4用紙1枚に10〜12枚のQRを配置できるため、印刷枚数を削減できます。
受信側:QRリーダーで読み取り → Excelに自動入力
QR-001から番号順にリーダーで読み取っていくだけです。1枚読み取るごとにExcelのカーソルはデータ末尾に自動移動します。次のQRを読み取ると、そこから続きが入力されます。
読み取りにかかる時間の目安
| 条件 | OPI-3601 / ALX-3601 (ディレイ10ms) | L-46X (ディレイ5ms) |
|---|---|---|
| QR1枚(255文字)の転送時間 | 255 × 10ms ≒ 約2.6秒 | 255 × 5ms ≒ 約1.3秒 |
| 読み取り動作(トリガ〜デコード) | 約0.5秒 | 約0.3秒 |
| QR1枚の合計時間 | 約3秒 | 約1.6秒 |
| 21枚(150件・35文字/件)の合計 | 約63秒(約1分) | 約34秒 |
| 100枚(500件・50文字/件)の合計 | 約5分 | 約2.7分 |
前のQRの転送が完了する前に次のQRを読み取ると、データが混在する恐れがあります。リーダーの「読み取り成功ブザー」が鳴ってから次のQRに移る習慣をつけてください。L-46Xではバイブレーション機能(振動)も確認に使えます。ハンズフリースタンド(STD-46)を使えば紙をかざすだけで読み取れ、大量QRの際に手の疲労を軽減できます。
転送可能なデータ量の目安
| 1レコード 文字数 | 1QRあたり レコード数 | 100件に 必要なQR | 500件に 必要なQR | 500件 所要時間 (ディレイ10ms) | 500件 所要時間 (ディレイ5ms) |
|---|---|---|---|---|---|
| 20文字 | 12件 | 9枚 | 42枚 | 約2分 | 約1分 |
| 35文字 | 7件 | 15枚 | 72枚 | 約3.5分 | 約2分 |
| 50文字 | 5件 | 20枚 | 100枚 | 約5分 | 約2.7分 |
| 80文字 | 3件 | 34枚 | 167枚 | 約8.5分 | 約4.5分 |
| 120文字 | 2件 | 50枚 | 250枚 | 約12.5分 | 約6.7分 |
| 255文字 | 1件 | 100枚 | 500枚 | 約25分 | 約13分 |
QR枚数が100枚を超える場合は、紙の管理・読み取り順序の管理・やり直しリスクが急激に増加します。100枚以上になる場合は、データを優先度でフィルタして転送量を減らす、複数日に分けて転送する、セキュリティ部門にUSBメモリの一時許可を申請するなどの代替策も検討してください。
実践シナリオ:工場の検査データ150件を転送する
| 項目 | 内容 |
|---|---|
| データ構造 | 製品ID(8文字)+ 検査値1(5文字)+ 検査値2(5文字)+ 合否(2文字)+ 日付(10文字)= 約30文字 + Tab×4 + Enter×1 = 約35文字/件 |
| 全データ文字数 | 35 × 150 = 5,250文字 |
| 必要QR枚数 | 5,250 ÷ 255 = 21枚(A4用紙3枚) |
| 受信側リーダー | ALX-3601(ディレイ10ms) |
| 所要時間 | 21枚 × 約3秒 ≒ 約63秒(約1分) |
数式まとめ
' E列:1レコード文字列
=A2 & CHAR(9) & B2 & CHAR(9) & C2 & CHAR(9) & D2 & CHAR(9) & E2 & CHAR(13)
' F1:全連結
=TEXTJOIN("", TRUE, E2:E151)
' G列:255文字ずつ分割
=IF((ROW()-1)*255+1 > LEN($F$1), "", MID($F$1, (ROW()-1)*255+1, 255))
' H列:通し番号
=IF(G1="", "", "QR-" & TEXT(ROW(), "000"))
' 全角チェック(半角のみならOK)
=IF(SUMPRODUCT((LEN(A2:D151)*2-LENB(A2:D151)))<>0,"⚠ 全角あり→記事⑪","✓ OK")
' 検証用
件数: =COUNTA(A2:A151) → 150
QR枚数: =ROUNDUP(LEN(F1)/255, 0) → 21
& や & CHAR(9) & で連結してください。
例えば「ステンレスボルトM8」のような全角文字を含む列があった場合、選択肢は2つです。
① 全角列を除外し、半角データ(コード・数値・日付)のみをQR転送。全角データは受信側でVLOOKUP等のマスタ参照で補完する。
② 記事⑪の設計メモを参考に、VBA標準機能のみで全角対応QRを生成する方針を検討する。完全版コードは後日公開検討のため、実装時はUSB COMモード+受信側VBAまで含めて検証が必要です。
トラブルシューティング
| 症状 | 原因 | 対処法 | 参照 |
|---|---|---|---|
| 文字が欠ける・抜ける | キャラクタ間ディレイ不足 | ディレイを10ms → 20msに上げる | ③ |
| 列がずれる | Tab(CHAR(9))の数が合っていない | 送信側E列の数式を確認 | ② |
| 余計な改行が入る | リーダーのサフィックスがON | SET → RY(サフィックスなし)→ END | ② |
| QRが生成されない | LinkedCellの文字数が255超 | =LEN()で確認し分割を見直す | ① |
| 全角文字が文字化け | バーコードコントロールの半角制限 | 全角列を除外するか記事⑪の設計メモを確認する | ⑪ |
| 読み取り順序を間違えた | 通し番号を確認しなかった | 受信側データをクリアしQR-001から再読み取り | ― |
| 件数が少ない | QRの読み漏れ | COUNTAで確認し、不足分のQRを特定して再読み取り | ― |
| 件数が多い | 同じQRを重複読み取り | 重複行を削除。通し番号で正しい範囲だけ残す | ― |
| 記号が化ける | キーボード言語がUSのまま | SET → PM(日本語キーボード)→ END | ④ |
| リーダーが反応しない | USB未認識 or スリープ状態 | USB抜き差し。トリガキーを押して復帰を確認 | ⑧ |
セキュリティ上の考慮事項
QRコードの紙は「物理的なデータ持ち出し」です。組織によってはUSBメモリと同等の管理が求められます。
| 懸念事項 | リスク | 対策 |
|---|---|---|
| QR印刷物の持ち出し管理 | 紛失・盗難で情報漏洩 | 通し番号で枚数管理。使用後はシュレッダー処理。「受領印+返却確認」の運用ルール |
| 転送内容の機密性 | スマホ等で読めば中身がわかる | 機密データは管理者立ち会いで転送。QR印刷物の取り扱い区分を設定 |
| 改ざん防止 | 印刷後に差し替え・追加の可能性 | チェックサム照合で検知。厳格な場合はQR枚数とチェックサムを別紙に記録し封印 |
| 承認フロー | 無断持ち出し | 「何を・いつ・誰が・どこへ」転送したか記録。上長承認を事前に取得 |
| 受信側での保存 | 復元データが管理外に流出 | 受信側PCでのファイル保存先・アクセス権を事前に決定 |
QR転送は「ソフトのインストール不要」「ネットワーク不要」という技術的な手軽さがありますが、セキュリティポリシー上の手軽さとは別問題です。USBメモリ禁止の組織では、紙によるデータ持ち出しにも同等の承認が必要な場合があります。必ず情報セキュリティ担当者に確認し、承認を得た上で運用を開始してください。
この記事で学んだこと ― まとめ
| 項目 | 内容 |
|---|---|
| 全角文字の対応 | バーコードコントロールは半角のみ。全角にはVBA標準機能のみでの自力生成+USB COM受信が必要になるため、記事⑪で設計方針を確認する。完全版コードは後日公開検討 |
| 閉域環境とは | ネットワーク・USB等が使えない隔離されたIT環境 |
| QR転送の原理 | Excel → QR文字列 → 紙に印刷 → 物理運搬 → 別PCでリーダー読取 → Excelに自動入力 |
| 1QRの上限 | 半角255文字(バーコードコントロールの制限) |
| 送信側の数式 | CHAR(9)でTab、CHAR(13)でEnter → TEXTJOIN連結(Excel 2016で使えない場合は & 連結)→ MID 255文字分割 |
| 必要QR枚数 | =ROUNDUP(LEN(全連結セル)/255, 0) |
| 受信側リーダー設定 | サフィックスOFF、ディレイ5〜10ms前後、日本語キーボード。OPI系では RY / LB / PM を使用 |
| 本記事の実機検証 | OPI-3601、ALX-3601、L-46X(オプトエレクトロニクス社)。Zebra / Honeywell は本記事のバーコードを流用せず、各ツールで同等設定を作成して確認する |
| 読み取り速度 | 1枚 約1.6〜3秒 → 21枚(150件)で約1分 |
| 制約 | 半角文字のみ(全角は記事⑪参照)。QR 100枚超は紙管理が煩雑 |
| セキュリティ | 紙=物理的データ持ち出し。情報セキュリティ担当者に事前確認必須 |
全角文字を含むQRを閉域環境で生成・転送したい → 記事⑪「全角QR生成の設計メモ」へ。完全版コードは後日公開検討ですが、外部ライブラリなしで考える場合の設計方針を整理しています。
異なるシステム間でデータを移行したい → 記事⑩「システム間データ移行」へ。
リーダーの選び方を知りたい → 記事⑧「QRリーダーの選び方と接続方法」へ。
もう一度基礎に戻りたい → 記事①「QR生成と基礎」へ。
QRリーダー連携の運用注意
QRリーダーは多くの場合、PCにはキーボード入力として認識されます。Tab、Enter、ファンクションキー、待機時間を組み合わせると登録・更新・削除などの操作まで進められるため、実務投入前の検証手順を必ず固定してください。
- 本番データではなく、架空データと検証用画面で読み取り順、セル移動、登録操作を確認する。
- 個人情報、認証情報、機密コードをQRにそのまま埋め込まない。必要な場合は最小限のIDに置き換える。
- 設定バーコード、初期化手順、復旧手順を保存し、誰が変更したかを記録する。
- キー変換や待機時間を変更した後は、Excel以外の画面がアクティブな状態で誤送信されないか確認する。