QRコードでシステム間データ移行!
旧システムから新システムへ、読み取るだけで引っ越し完了
ExcelでQRコードを作成し、QRリーダーやバーコードリーダーで読み取って、Excel入力・Webシステム入力・業務システム入力を自動化したい場面を想定しています。APIやCSVインポートが使えず、VBA・マクロも禁止されている会社の移行作業では、QRリーダー入力が代替手段になる場合があります。
↵ 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 を中心にしています。ただし、サフィックス変更、ディレイ調整、NumEnterやPauseなどのキー送信は、ZebraやHoneywellなど主要メーカーでも対応できる場合があります。設定名・設定ツール・復元方法はメーカーごとに異なるため、他メーカーでは本記事のバーコードをそのまま使わず、各メーカーのマニュアルや設定ツールで同等設定を作ってください。
🔑 最初に ― 本記事を読む前に知っておいてほしいこと
顧客名、商品名、住所、備考欄――業務システムのデータには日本語(全角文字)がほぼ必ず含まれます。バーコードコントロール(ActiveX)は半角文字しか扱えないため、現実のシステム移行でそのまま使えるケースは限定的です。
本記事では、バーコードコントロール+キーボードエミュレーション方式での「半角データのシステム移行」を解説します。フィールドマッピング・キー操作設計・Sleepの配置・移行バッチの組み立てといった設計思想は、全角対応の場合でもそのまま活きる共通技術です。
しかし正直に言えば、本シリーズの本命は次の記事⑪です。
記事⑪では、外部ライブラリなし・ネット接続なしで、VBAの標準機能だけで漢字・ひらがなを含むQRコードを生成する方法を解説しています。閉域環境ではライブラリの追加インストールが困難なため、ADODB.Stream+リード・ソロモン符号によるVBA自力生成が最も現実的な選択肢になります。
本記事で学ぶ「操作を分解してQRプログラムに変換する設計技法」は、記事⑪のVBA生成方式でもそのまま使います。つまり本記事は、記事⑪を最大限に活用するための設計編という位置づけです。ぜひ最後まで読んで、記事⑪へ進んでください。
本記事と記事⑪の関係
| 項目 | 本記事(⑩) | 記事⑪(本命) |
|---|---|---|
| QR生成方式 | バーコードコントロール(Access由来のActiveX) | VBA標準機能のみで自力生成 |
| 全角文字 | ✕ 使えない | ○ 使える |
| 外部ライブラリ | 不要。ただしAccess由来のMicrosoft Barcode Controlが使えるOffice構成と、ActiveX利用が許可された設定が前提 | 不要 |
| 閉域環境 | ○ | ○ 最適 |
| 学べること | 設計技法:画面分析・マッピング・キー操作設計・Sleep配置 | 実装技法:UTF-8変換・RS符号・セル描画・全角QR生成 |
| 実務での出番 | 半角のみのコード・数値データの移行 | 日本語を含む実データの移行(=ほとんどの現場) |
本記事で移行の設計手法(画面分析→マッピング→数式設計→テスト)を理解してから、記事⑪で全角QR生成の実装に進むと、両方の技術がスムーズに繋がります。設計なしにいきなりVBAコードだけ書いても、実務の移行プロジェクトはうまくいきません。
💡 この記事の目的
記事⑨では「Excel → Excel」のデータ転送を扱いました。本記事ではさらに踏み込み、異なるシステム間でのデータ移行にQRコードを活用する方法を解説します。
旧システムのリプレース、部門間のシステム統合、クラウド移行――こうした場面で「旧システムの数千件のデータを新システムに手入力する」という作業が発生しがちです。QRコードなら、新システムの画面にキーボード入力として直接データを流し込めるため、インポート機能がなくても移行が可能です。
- QR移行の位置づけ:API・CSV・RPA等との比較で「いつQRが有効か」を判断する
- 画面操作の分析手法:新システムの入力画面を1キーずつ分解する
- フィールドマッピング:旧データ項目と新画面フィールドの対応付け
- QRプログラム数式の設計:データ+Tab+Enter+Sleep+特殊キーを1つの数式にまとめる
- テスト→本番移行の進め方:段階的テストと所要時間の見積もり
なぜQRコードでシステム移行なのか
| 移行手段 | 前提条件 | メリット | デメリット |
|---|---|---|---|
| API連携 | 両システムにAPIがある | 高速・自動化可能 | 開発コスト大・技術者必要 |
| CSVインポート | 新システムにインポート機能 | 大量データに対応 | 機能がないシステムでは不可 |
| DB直接移行 | DBアクセス権限・スキーマ知識 | 最速・大量データ | リスク大・専門知識必須 |
| RPA | RPAツール導入済み | 画面操作を自動化 | ライセンス費用・設定工数 |
| 手入力 | なし | 確実 | 膨大な時間・ミス多発 |
| QRコード移行 | Excel + QRリーダー | 導入ゼロ・画面操作を自動化・閉域OK | 半角制限(記事⑪で解消)・255文字/QR |
QRコード移行の最大の利点は、新システム側に特別な機能や権限が一切不要なことです。キーボードで入力できる画面さえあれば、QRリーダーがキーボードの代わりにデータを打ち込みます。RPAと同じ発想ですが、ソフトウェアのインストールが不要なため、IT部門の許可なしで即日導入できる場合が多いです。
記事⑨との違い ― Excel→Excel と システム→システム
| 要素 | 記事⑨(Excel→Excel) | 本記事(システム→システム) |
|---|---|---|
| 受信側の入力先 | Excelのセル(Tab/Enterで移動) | 業務システムの入力画面(Tab/Enter+特殊キー操作) |
| 画面遷移 | なし | メニュー選択→画面遷移→登録→次画面 |
| 待ち時間 | 不要 | 画面遷移のSleep(記事⑥)が必要 |
| 特殊キー操作 | Tab・Enterのみ | F2・Esc・矢印キー・Delete等(記事④⑤) |
| フィールド順序 | Excel列順=データ順 | 画面のTab順序と旧データの列順が異なる場合あり |
| 繰り返し | QRを順番に読むだけ | 1件ごとに「新規登録→入力→保存」のサイクル |
つまり本記事は、記事⑦(全体システム設計)の技法を「移行」という文脈で再構成したものです。記事①〜⑦の全技術を総動員します。
移行プロジェクトの全体フロー
| フェーズ | 作業内容 | 成果物 | 所要時間(目安) |
|---|---|---|---|
| ① データ抽出 | 旧システムからデータをExcelに取り込む | 移行元データシート | 1〜2時間 |
| ② 画面分析 | 新システムの入力画面のキー操作を洗い出す | 操作フロー表 | 1〜2時間 |
| ③ マッピング | 旧データ項目と新画面フィールドを対応付ける | フィールドマッピング表 | 30分〜1時間 |
| ④ 数式設計 | QRプログラム数式を組み立てる | QR生成シート | 1〜2時間 |
| ⑤ テスト&本番 | テスト環境で数件検証 → 全件移行 | 移行完了 | 件数による |
全体で1〜2日あれば、数百件規模の移行が完了します。手入力なら数週間かかるような作業が、設計1日+実行数時間で終わる計算です。
フェーズ①:旧システムからデータを抽出する
| 抽出方法 | 対象システム | 注意点 |
|---|---|---|
| CSV/TSVエクスポート | 多くの業務システム | 文字コードに注意(UTF-8推奨) |
| 帳票→PDF→コピー | 帳票印刷のみ可能なシステム | 列がずれやすい、目視確認必須 |
| 画面コピー | 出力機能がないシステム | 1画面分ずつしか取れない |
| QRコード逆転送(記事⑨) | 閉域環境の旧システム | 旧側にもExcel+QR環境が必要 |
どんな方法でも、最終的にExcelの1シートに「1行=1レコード、1列=1フィールド」の形で整理します。この表が移行の起点になります。
フェーズ②:新システムの入力画面を操作分析する
QR移行の成否は、新システムの画面操作をどれだけ正確に分析できるかにかかっています。記事⑦で学んだ「操作を1キーずつ分解する」手法を使います。
新システムの「新規登録」画面を開き、1件のデータを手で入力しながら、押したキーをすべて書き出します。
| 操作順 | 画面の状態 | 押すキー | QRシンボル | 備考 |
|---|---|---|---|---|
| 1 | メニュー画面 | 「2」(新規登録) | 2 | メニュー番号で選択 |
| 2 | 画面遷移中 | (3秒待機) | ! | Sleep(記事⑥) |
| 3 | 顧客コード欄にカーソル | コード入力 | (データ) | 半角英数 |
| 4 | 顧客コード欄 | Tab | CHAR(9) | 次フィールドへ |
| 5 | 顧客名欄(自動表示) | Tab | CHAR(9) | スキップ(自動入力欄) |
| 6 | 電話番号欄 | 電話番号入力 | (データ) | 半角数字・ハイフン |
| 7 | 電話番号欄 | Tab | CHAR(9) | — |
| 8 | 区分ドロップダウン | ↓キー×n回 | ^(n回) | 記事④の文字→キー変換 |
| 9 | 区分確定 | Tab | CHAR(9) | — |
| 10 | 備考欄 | (空でスキップ) | CHAR(9) | Tab で通過 |
| 11 | 登録ボタンにフォーカス | Enter | CHAR(13) | 登録実行 |
| 12 | 確認ダイアログ | Enter | CHAR(13) | 「はい」を確定 |
| 13 | 登録完了→メニューに戻る | (3秒待機) | ! | 画面遷移待ち |
分析で見落としやすいポイント
| 見落としがちな要素 | 具体例 | 対処法 |
|---|---|---|
| 自動入力フィールド | コード入力→名称自動表示 | Tab で通過(データは入れない) |
| 確認ダイアログ | 「登録しますか? はい/いいえ」 | Enter or Tab+Enter を追加 |
| ドロップダウン選択 | 区分・カテゴリ等 | ↓キー回数 or 頭文字入力(記事④⑤) |
| 日付欄の書式変換 | 自動で「/」が入る欄 | 「20260417」のように数字だけ入力 |
| 既存値のクリア | デフォルト値が入っている欄 | Delete(`) で消してから入力 |
| 画面遷移の待ち時間差 | 初回は遅いが2回目以降は速い | 最も遅いケースに合わせてSleep設定 |
フェーズ③:フィールドマッピング表を作成する
マッピング表の例(顧客マスタ移行)
| 旧データ列 | 旧項目名 | 新システムフィールド | 操作順 | 変換処理 |
|---|---|---|---|---|
| A列 | 顧客コード | 顧客コード欄 | 3番目 | そのまま |
| — | — | 顧客名欄(自動表示) | 5番目 | Tab で通過 |
| B列 | 電話番号 | 電話番号欄 | 6番目 | ハイフン除去 |
| C列 | 区分 | 区分ドロップダウン | 8番目 | 数値→↓キー回数に変換 |
| D列 | 備考 | 備考欄 | 10番目 | 空ならスキップ |
よくあるマッピングパターン
| パターン | 旧データの状態 | 新システムでの入力方法 | Excel数式での変換 |
|---|---|---|---|
| そのまま転記 | 半角テキスト | フィールドにそのまま入力 | A2 |
| ハイフン除去 | "03-1234-5678" | "0312345678" | =SUBSTITUTE(B2,"-","") |
| 日付書式変換 | "2026/04/17" | "20260417" | =TEXT(D2,"YYYYMMDD") |
| 区分→選択回数 | 区分"3" | ↓キー3回 | =REPT("^",C2) |
| フラグ→チェック | "1"(有効) | Spaceキー | =IF(E2="1"," ","") |
| 旧にない項目 | — | 空でTab通過 | CHAR(9) |
| 新にない項目 | 存在する | 移行しない | 数式から除外 |
フェーズ④:QRプログラム数式を組み立てる
記事⑦の「QRプログラム」の構造をそのまま適用します。1レコード(1件の移行データ)に対して、「メニュー操作→画面遷移待ち→データ入力→登録→画面遷移待ち」の全操作を1つの文字列にまとめます。
= "2" & CHAR(13) & "!"
& A2 & CHAR(9)
& CHAR(9)
& SUBSTITUTE(B2,"-","") & CHAR(9)
& REPT("^",C2) & CHAR(9)
& IF(D2="","",D2) & CHAR(9)
& CHAR(13) & CHAR(13)
& "!"
数式の分解
| 部分 | 数式 | 動作 | 参照 |
|---|---|---|---|
| メニュー選択 | "2" & CHAR(13) | 「2」入力 → Enter で新規登録画面へ | ⑦ |
| 画面遷移待ち | "!" | 3秒Sleep | ⑥ |
| 顧客コード | A2 & CHAR(9) | データ入力 → Tab | ② |
| 顧客名スキップ | CHAR(9) | 自動表示欄を Tab で通過 | ② |
| 電話番号 | SUBSTITUTE(B2,"-","") & CHAR(9) | ハイフン除去して入力 → Tab | — |
| 区分選択 | REPT("^",C2) & CHAR(9) | ↓キーをC2回 → Tab | ④⑤ |
| 備考 | IF(D2="","",D2) & CHAR(9) | 備考があれば入力 → Tab | — |
| 登録実行 | CHAR(13) & CHAR(13) | Enter(登録)→ Enter(確認ダイアログ) | ② |
| 画面遷移待ち | "!" | 3秒Sleep で メニューに戻る | ⑥ |
記事⑨では複数レコードを1QRにまとめましたが、システム移行では1件ごとに「登録→画面遷移→次の新規登録」というサイクルがあるため、1QR=1レコードが原則です。1件あたりの文字数を =LEN(E2) で確認してください。上記の例は約55文字なので255文字以内に余裕で収まります。
フィールド数が多い大規模システムでは1件が255文字を超えることがあります。その場合は「前半QR(途中のフィールドまで入力して止まる)」と「後半QR(続きから入力して登録まで)」に分割します。分割ポイントは必ずTab直後(フィールドの切れ目)に設定してください。
フェーズ⑤:テスト移行 → 本番移行
| 段階 | テスト内容 | 確認ポイント | 失敗時の対処 |
|---|---|---|---|
| Step 1 | メニュー→画面遷移のみ | Sleepの長さが足りているか | ! を追加してSleep延長 |
| Step 2 | 最初の2〜3フィールドだけ入力 | Tab順序は正しいか、自動入力欄のスキップは正しいか | Tab/データの順序を修正 |
| Step 3 | 全フィールド入力+登録まで(1件) | 全フィールドに正しい値が入り、登録されたか | マッピング or 変換式を修正 |
| Step 4 | 連続3件を実行 | 2件目以降もサイクルが正しいか | 末尾のSleepを調整 |
| Step 5 | 10件バッチ | 文字欠けなし、速度安定か | ディレイ調整(記事③) |
Step 5まで問題なければ、新システムのバックアップを取得した上で、QR-001から順番に全件読み取りで本番移行を実行します。10件ごとに新システム側で件数を確認し、全件完了後にサンプル数件を目視照合すれば十分です。
所要時間の見積もり
| 1件あたりの実行時間 | 内訳 | 100件 | 500件 | 1,000件 |
|---|---|---|---|---|
| 約8秒(画面遷移なし) | 読取1s + 入力3s + 登録1s + 待機3s | 約13分 | 約67分 | 約2.2時間 |
| 約12秒(画面遷移1回) | 読取1s + 遷移3s + 入力3s + 登録1s + 遷移3s + 余裕1s | 約20分 | 約100分 | 約3.3時間 |
| 約18秒(画面遷移2回+重い処理) | 読取1s + 遷移3s + 入力4s + 確認2s + 登録1s + 処理4s + 遷移3s | 約30分 | 約150分 | 約5時間 |
1,000件でも半日あれば完了します。手入力なら1件3分 × 1,000件 = 50時間(6日以上)かかる作業です。
実践シナリオ:旧販売管理 → 新クラウドCRMへの顧客マスタ移行
| 項目 | 内容 |
|---|---|
| データ項目 | 顧客コード(8) + 電話番号(11) + 担当者コード(4) + 区分(1桁→DD) + 登録日(8) = 計約32文字 + 操作約25文字 = 約57文字/件 |
| 1件あたり実行時間 | 約12秒 |
| 全体所要時間 | 350件 × 12秒 = 4,200秒 ≒ 約70分 |
QR数式
= "3" & CHAR(13) & "!"
& A2 & CHAR(9)
& CHAR(9)
& SUBSTITUTE(B2,"-","") & CHAR(9)
& C2 & CHAR(9)
& REPT("^", D2) & CHAR(9)
& TEXT(E2,"YYYYMMDD") & CHAR(9)
& CHAR(13) & CHAR(13)
& "!"
タイムライン(1件の流れ)
| 時間 | QR内の送信内容 | 画面の動き |
|---|---|---|
| 0.0s | "3" → Enter | メニューから「3:顧客登録」を選択 |
| 0.1–3.1s | ! (Sleep 3秒) | 顧客登録画面が開く |
| 3.1s | "CUS-0042" → Tab | 顧客コード入力 → 次フィールドへ |
| 3.3s | Tab | 顧客名(自動表示)をスキップ |
| 3.4s | "0312345678" → Tab | 電話番号入力 → 次フィールドへ |
| 3.6s | "T012" → Tab | 担当者コード入力 → 次フィールドへ |
| 3.8s | "^^" → Tab | ↓キー2回(区分2を選択)→ 次フィールドへ |
| 4.0s | "20260417" → Tab | 登録日入力 → 登録ボタンへ |
| 4.2s | Enter | 登録ボタン押下 |
| 4.3s | Enter | 確認ダイアログ「はい」 |
| 4.4–7.4s | ! (Sleep 3秒) | 登録処理 → メニュー画面に戻る |
1件約7.4秒。350件で約43分。途中確認の時間を入れても70分以内で完了します。
移行パターン別の設計ガイド
| 移行パターン | 特徴 | 設計のポイント | 使う技術 |
|---|---|---|---|
| デスクトップ → デスクトップ | Tab順序が安定、動作が速い | Sleep短め(1〜2秒)、ディレイ低めでOK | ②④⑥ |
| デスクトップ → Webシステム | 画面読み込みに時間がかかる | Sleep長め(3〜5秒)、Tab順序が変わることがある | ②④⑤⑥ |
| Excel → 業務システム | データ加工が容易 | SUBSTITUTE・TEXT等で書式変換してからQR化 | ②③⑥⑦ |
| 閉域旧システム → 閉域新システム | 紙経由の二段階移行 | 旧→Excel(記事⑨)→QR化→新システム(本記事) | ⑨+本記事 |
| 複数旧システム → 1つの新システム | データ形式がバラバラ | 旧システムごとに別のマッピング表・数式を作成 | 全技術 |
トラブルシューティング(移行特有の問題)
| 症状 | 原因 | 対処法 |
|---|---|---|
| 2件目以降でフィールドがずれる | 1件目の登録後、メニューに戻りきる前に2件目が始まる | 末尾のSleepを長くする(! を追加) |
| ドロップダウンの選択がずれる | ↓キー回数の計算ミス、または初期値が「1番目」 | 初期状態を確認し、REPT回数を±1調整 |
| 日付欄に正しく入力されない | 新システムが「/」を自動挿入する | TEXT関数の書式を新システムに合わせる |
| 確認ダイアログが出ない件がある | データ内容により確認の有無が変わる | IF関数で条件分岐(Enter追加/省略) |
| 途中で新システムがタイムアウト | 移行に時間がかかりセッション切れ | 50〜100件ごとに再ログインする運用に変更 |
| 旧データに不正値がありエラーで止まる | 旧システムの入力規則が甘かった | 事前にExcelでバリデーション(IF・ISERROR等) |
| 全角文字が文字化けする | バーコードコントロールの半角制限 | 記事⑪のVBA標準機能のみ方式で全角QRを生成する |
この記事で学んだこと ― まとめ
| 項目 | 内容 |
|---|---|
| QR移行の利点 | 新システム側にAPI・インポート機能不要。キーボード入力できる画面があれば移行可能 |
| 全体フロー | データ抽出 → 画面分析 → マッピング → 数式設計 → テスト&本番(5フェーズ) |
| 画面分析の重要性 | 新システムの操作を1キーずつ分解し、QRプログラムに変換する |
| フィールドマッピング | 旧データ列と新画面フィールドを対応付け、変換処理を定義する |
| 1QR=1レコードが原則 | 登録→画面遷移のサイクルがあるため、レコード途中での分割は避ける |
| 所要時間目安 | 1件8〜18秒 → 1,000件でも半日以内 |
| 全角文字の制約 | バーコードコントロールは半角のみ → 記事⑪のVBA自力生成で全角対応 |
| 使う全技術 | 記事①〜⑦の全技術と⑨の閉域転送手法を総動員 |
本記事で学んだ画面分析・マッピング・数式設計の技法は、次の記事⑪でもそのまま活きます。記事⑪では、バーコードコントロールの「半角しか使えない」という壁を、VBA標準機能だけで突破します。外部ライブラリなし・ネット接続なしで、漢字・ひらがなを含むQRコードを生成する方法を解説します。
閉域環境ではライブラリの追加インストールが困難です。そのため、ADODB.Stream(UTF-8変換)+ リード・ソロモン符号(誤り訂正)+ セル描画というVBA自力実装が、最も現実的な全角対応手段になります。
→ 記事⑪「VBA標準機能だけで全角QR生成」へ進む
QRリーダー連携の運用注意
QRリーダーは多くの場合、PCにはキーボード入力として認識されます。Tab、Enter、ファンクションキー、待機時間を組み合わせると登録・更新・削除などの操作まで進められるため、実務投入前の検証手順を必ず固定してください。
- 本番データではなく、架空データと検証用画面で読み取り順、セル移動、登録操作を確認する。
- 個人情報、認証情報、機密コードをQRにそのまま埋め込まない。必要な場合は最小限のIDに置き換える。
- 設定バーコード、初期化手順、復旧手順を保存し、誰が変更したかを記録する。
- キー変換や待機時間を変更した後は、Excel以外の画面がアクティブな状態で誤送信されないか確認する。