広告あり

会社PCでExcelの転記を減らすには? Edgeだけで動くオフライン管理ツールを作った話

同じ形式のExcel帳票が何枚も届き、管理番号や品目コードを一覧表へ転記する。こうした作業を減らしたくても、会社のPCに新しいソフトを入れられるとは限りません。

そこでChatGPTに要件整理とプログラムの作成を依頼し、Windows 11のMicrosoft Edgeで開けるローカルHTMLを開発しました。旧形式の.xlsから12項目を読み取り、社内共有フォルダーに登録して、検索やExcel出力まで行うツールです。日常の利用時に、データ処理のための外部サービスへの接続を必要としない構成にしました。

この記事では、帳票のどこを読むか決めた方法、複数のPCで扱うために選んだ保存方式、CSVを開いたときに管理番号が日付に見えたトラブルを紹介します。各工程のプロンプト例は、開発時の依頼を匿名化して要約したものです。

※動画は説明用の再現映像であり、実際の業務データは使用していません。

会社PCで定型Excelの転記を減らしたかった

追加インストールが難しい環境で使う

対象は、複数の担当者が使う変更管理の定型帳票です。担当者が必要な項目を抽出して一覧に登録でき、別の担当者も同じデータを検索・更新できる形を目指しました。会社PCではソフトの追加や管理者権限を必要とする作業が難しく、業務データの保存先も社内に限るという条件がありました。

EdgeでローカルHTMLを開く方式にした理由

すでに入っているEdgeでHTMLを直接開き、ファイル選択欄からExcelを指定する方式にしました。ブラウザのファイル機能で選んだファイルの内容をJavaScriptに渡せるため、読み取り、項目の抽出、結果表示までPC内で処理できます。共有時だけ、各PCからアクセスできる社内共有フォルダーを使います。ブラウザからの書き込みは、会社のEdgeの設定や共有先の権限に左右されます。

参考資料は MDNのFile API解説 と MicrosoftのEdge書き込みポリシー です。

プロンプト例 1 動作環境と進め方を伝える

Windows 11の会社PCで定型Excelの必要項目を取り込むツールを作成してください。管理者権限や追加インストールを前提にせず、EdgeでローカルHTMLを開く方式を優先してください。業務データを外部に送信せず、最初に帳票の構造と抽出項目を確認してください。

.xlsから12項目を読み取る仕組み

印刷シートの数式から入力元を特定する

原紙を調べると、印刷用シートに表示される12項目は、共通の入力シートを参照していました。日付のように年・月・日が別々のセルに入り、中間の数式で表示用に整える項目もありました。そこで、印刷用の文字列を分解する処理を省き、入力元のセルから値を取得する構成にしました。

日付は年・月・日を組み合わせ、在庫数の0と未入力は区別します。管理番号や品目コードは、先頭のゼロや追番を含む値として扱います。読み取り機能は、確認した原紙と同じ構成の.xlsを対象にしています。

印刷欄の直接入力や参照先の変更を除外する

印刷用シートが直接修正されると、表示内容と入力元の値が食い違う可能性があります。対象欄の数式や、その途中で参照する数式を原紙と照合し、置き換えや参照先の変更があれば、ファイル単位で自動登録から外します。管理番号の未入力や不完全な日付は「要確認」として扱います。

プロンプト例 2 抽出項目と除外条件を指定する

印刷用シートに表示される管理番号、日付、品目コード、在庫数など、指定した12項目を読み取ってください。印刷欄の数式をたどり、入力元の値を使ってください。数式の欄に直接入力されていたり、参照先が変更されていたりするファイルは除外し、理由を表示してください。管理番号は追番まで含めて登録してください。

読み取ったデータを自動登録し、共有する

追番付きの管理番号で重複を判定する

試作では読み取り結果を確認してから保存しました。運用に合わせて、最終版は正常に読めたファイルを自動で登録・更新する方式に変更しました。複数ファイルをまとめて選べ、登録後は12項目のどれからでも部分一致で検索できます。

取り込んだデータ処理
追番を含む管理番号が未登録新規登録
同じ番号で12項目が一致重複としてスキップ
同じ番号で内容が異なる新しい版として更新し、更新前の版を履歴に残す
一括選択したファイルに同じ番号で異なる内容がある該当するファイルを保留し、選択順による上書きを避ける

自動更新では入力済みの値に加え、空欄も反映されます。修正版を取り込むときは、採用する版のExcelを選ぶ必要があります。

同じ番号の更新が重なったら両方を履歴に残す

共有データを1つのファイルにまとめて上書きする案も検討しましたが、最終的には登録・更新ごとに別の履歴ファイルを作る方式にしました。同じ版を基に別々の更新が保存された場合は、両方を競合候補として表示します。候補の差分を見比べて採用する版を決め、採用後も元の候補を履歴に残します。

プロンプト例 3 自動登録と共有時の扱いを決める

各PCから同じ共有フォルダーを使い、読み取り後に確認画面を挟まず登録できるようにしてください。同じ番号で内容が一致する場合は重複をスキップしてください。別のPCから同じ版を基にした更新が重なった場合は、候補を両方残し、採用する版を選べるようにしてください。

CSVで管理番号が日付に見えた

出力したCSVを開くと「Jan-03」のように表示された

検索結果をCSVに出力してExcelで開いたところ、一部の管理番号がJan-03のように表示されました。原因として考えられるのは、Excelがハイフン付きの値を日付として解釈する自動変換です。CSVでは列のデータ型を指定できないため、管理番号を文字列として扱う必要があるときは、開き方か出力形式を変える必要があります。

Excelの自動変換については、Microsoftの 日付への自動変換を防ぐ方法 と 先頭のゼロを保持する方法 を参照できます。

.xlsx出力で管理番号を文字列として保存する

対策としてExcel出力を追加し、管理番号・品目コード・図面番号を文字列型で書き込むようにしました。日付欄は日付として扱えるようにしているので、番号の表記を保ちながら日付で並べ替えできます。生成したブックを別の読み取り処理で開き、検証用の1-03や00123が元の文字列で保存されていることを確認しました。

プロンプト例 4 再現した症状と期待値を伝える

CSVをExcelで開くと、一部の管理番号が「Jan-03」のような日付表示になります。ハイフンと先頭ゼロを保持できるExcel出力を追加し、検証用の「1-03」「00123」を出力後に読み直して、文字列として保存されているか確認してください。

実際に確認できたことと、運用前に見る点

入力済みの.xlsを5件読み取って確認

読み取り試作では、業務側で入力済みの.xlsを5件選び、読み取りに問題がないことを確認しました。原紙と架空データを使った開発環境では、在庫数の0と空欄の区別、数式の変更による除外、自動更新、競合候補の保持、検索結果の出力を個別に確認しました。

中断後の読み出しと、複数PCでの検証範囲

保存方式を検討した段階では、架空データを使った中断テストも実施しました。更新を一時停止して画面を開き直した後、正式データと控えの両方から初期データを読み出せる結果が得られました。最終版の実際の会社PC2台を使った更新反映・同時更新の検証は省略しています。Excel出力で確認したのは、開発環境で読み直したファイルの値とデータ型です。

同じ仕組みを別の職場で使う場合は、まず匿名化した帳票で読み取り結果を照合し、次に実際のEdgeと共有フォルダーで保存と再読み込みを試します。複数のPCで使う場合は、片方で更新したデータをもう片方で読み直せるか、同じ番号の変更が重なったときに両方の内容が残るかが確認点です。

まとめ

この事例では、追加インストールが難しい会社PCでも、既存のEdgeで開くHTMLと社内共有フォルダーを組み合わせて、定型Excelの読み取りから登録・検索・出力までをつなげられました。ChatGPTへの依頼は、動作環境、帳票の読み取り条件、更新時のルール、出力で起きた症状に分けて伝えました。

同じような転記作業を見直すときは、最初に印刷欄が参照する入力元を確認し、次に追番を含む重複判定と更新の扱いを決めます。出力まで必要なら、日付に見える番号や先頭ゼロが付いたコードを使って、実際に開いたときの表記まで確認すると、運用時の手戻りを減らせます。

関連して、関数の作成にAIを使う場合の検証は ChatGPTでExcel関数を作ってみた で紹介しています。

でわっ!!

コメント

タイトルとURLをコピーしました