CSVの社員番号001をExcelでゼロ落ちさせずに取り込む
Copyright © 2026 LWP 山中 一弘
本資料は、出典を明記いただければ、商用・非商用を問わず、ご自由に複製・改変・再配布していただけます。なお、著作権表示は改変せず、そのまま記載してご利用くださいますようお願いいたします。
記事要約
CSVをExcelでダブルクリックして開くと、社員番号 001 が数値として解釈され、1 になってしまうことがあります。
これはCSVの問題というより、Excelが読み込み時に型を推測することによる問題です。
この記事では、CSVの社員番号を文字列として守るために、Excelの取り込み、Power Query、VBAの OpenText をどう使い分けるかを整理します。
本記事の対象とゴール
CSVをExcelで扱うと社員番号やコードの先頭ゼロが消えて困っている人
「メモ帳で開いて加工する」作業を引き継いだ人
VBAでCSV取り込みボタンを作り、現場作業を安定させたい人
先に結論
社員番号 001 を守りたいなら、CSVをダブルクリックで開いてはいけません。
Excelに自動判定させるのではなく、社員番号列を文字列として取り込む必要があります。
実務上の選択肢は次の通りです。
Excelの「データから取得」で、対象列を文字列にする
Power Queryで列の型をテキストにする
VBAで Workbooks.OpenText の FieldInfo を指定する
加工専用のCSVエディタやVS Code拡張を使う
作業が定型なら、取り込みボタンを作る
<!-- LWP_REWRITE_EXPANSION_記事112 -->
1. 001は数値ではなくコードである
CSVの社員番号 001 をExcelへ取り込むと、数値として解釈されて 1 になることがあります。これはExcelの自動型変換が便利に働いた結果ですが、業務データとしては誤りです。
社員番号、商品コード、郵便番号、口座番号のような値は、数字だけで構成されていても数値とは限りません。計算しない値は、文字列として扱うべきです。
2. 取り込み時に型を決める
ゼロ落ちを防ぐには、取り込んだ後で表示形式を直すのではなく、取り込み時点で文字列として扱う必要があります。Power Query、テキストインポート、VBAの読み込み処理では、対象列を文字列として明示します。
表示形式を 000 にしても、内部値が 1 なら元の 001 を保持しているわけではありません。後工程へ渡すデータとしては、内部値を守ることが重要です。
3. 業務データの型を先に決める
Excelでは、見た目と内部値がずれることがあります。だから、取り込み前に「この列は数値か、コードか、日付か、文字列か」を決めます。
CSVを扱うマクロでも、列ごとの型定義を持つと安全です。自動判定に任せるのではなく、業務上の意味に合わせて読み込みます。
なぜ001が1になるのか
CSVは、基本的にはテキストです。
しかしExcelでCSVを直接開くと、Excelは各列の型を推測します。
001 は、人間にとっては社員番号かもしれません。
しかしExcelの自動判定では、数値 1 と解釈されることがあります。
この時点で先頭のゼロは表示だけでなく、データとして失われることがあります。
ダブルクリックで開かない
投稿群で最初に出てくる重要な指摘は、「アイコンをダブルクリックで開くから起きる」という点です。
CSVをダブルクリックしてExcelに任せると、型指定の機会がありません。
社員番号、商品コード、郵便番号、勘定科目コードなど、先頭ゼロが意味を持つ列では、ダブルクリックを標準手順にしない方が安全です。
Excelのデータ取り込みで文字列指定する
Excelだけで対応するなら、CSVを直接開くのではなく、データ取り込み機能を使います。
手順の考え方は次の通りです。
データ -> テキストまたはCSVから -> CSVファイルを選ぶ -> 社員番号列の型をテキストにする -> 読み込むこれなら、001 を文字列として取り込めます。
Power Queryで取り込む
Power Queryを使う場合も、考え方は同じです。
取り込み後に、社員番号列の型をテキストにします。
CSV入力 -> Power Queryエディター -> 社員番号列 -> データ型: テキスト -> 読み込みPower Queryの良いところは、取り込み手順をクエリとして保存できることです。
同じ形式のCSVを何度も処理するなら、手作業で毎回型を指定するより安定します。
VBAでOpenTextを使う
VBAで取り込みボタンを作るなら、Workbooks.OpenText で列の型を指定できます。
たとえば、1列目が社員番号なら、1列目を文字列として開きます。
Sub OpenCsvKeepingEmployeeCode() Dim path As String path = "C:\work\employees.csv" Workbooks.OpenText _ Filename:=path, _ DataType:=xlDelimited, _ Comma:=True, _ FieldInfo:=Array(Array(1, xlTextFormat))End Sub複数列を指定する場合は、列番号と型の組を増やします。
FieldInfo:=Array( _ Array(1, xlTextFormat), _ Array(2, xlGeneralFormat), _ Array(3, xlTextFormat) _)この方法なら、現場担当者に「CSVを直接開かないでください」と言うだけでなく、正しい開き方をボタンにできます。
シングルクォートを付ける方法の注意
投稿には、'001 のように先頭へシングルクォートを付ける方法も出てきます。
これはExcel上で文字列扱いにするための方法です。
ただし、元CSV自体にシングルクォートを混ぜると、その後のシステム連携や再出力で余計な文字として扱われる可能性があります。
手作業の一時対応としては使える場面がありますが、業務手順としては、取り込み時に列型を指定する方が安全です。
CSVエディタやVS Codeを使う
Excelで開く必要がないなら、CSVエディタやVS Code拡張を使う選択肢もあります。
重要なのは、CSVを「Excelブック」ではなく「テキストデータ」として扱うことです。
閲覧・軽い編集だけなら、Excelの自動型変換を通さない道具の方が向いています。
実務では取り込みボタンにする
引き継ぎ作業で「メモ帳で開いて加工する」という手順が出てきたら、単に担当者の工夫として見るのではなく、なぜExcelを避けていたのかを確認する必要があります。
今回のように、社員番号 001 が 1 になることを避けるためなら、VBAやPower Queryで手順化できます。
悪い手順: CSVをダブルクリックして開く 先頭ゼロが消えた後で直す良い手順: 取り込み時に社員番号列を文字列にする 加工後はXLSXや正しいCSVとして保存するまとめ
社員番号 001 を守るには、Excelに自動判定させないことが重要です。
CSVをダブルクリックで開くのではなく、データ取り込み、Power Query、VBAの OpenText などで列型を指定します。
業務として繰り返すなら、取り込みボタンやPower Queryにして、作業者が迷わない形にするのがよいでしょう。
出典メモ- 元Togetter URL: https://togetter.com/li/1842539
正規Posfie URL: https://posfie.com/@hoehoe1234/p/Genc3dz
投稿者: LythyMay, TassieXxxx, Toscy_uran, _64_64_128, agu_agub, ariakenotsukiyo, hassy_birow, hdslaa, kuronekomaru307, minami777333, pa_ra_sure, plus_one_masaki, satovba7, shakeisan, son_tyo23623, wafuku
投稿数: 16
画像確認: 画像2点を取得し、記事化時に内容を確認
取得・確認日: 2026-06-11
確認した主な投稿:
@satovba7 2022-02-07 21:03:00: https://x.com/satovba7/status/1490657343255760906
@agu_agub 2022-02-07 21:44:26: https://x.com/agu_agub/status/1490667768785498115
@pa_ra_sure 2022-02-07 21:45:45: https://x.com/pa_ra_sure/status/1490668100315799555
@hassy_birow 2022-02-07 21:47:48: https://x.com/hassy_birow/status/1490668617322889216
@hdslaa 2022-02-07 22:45:41: https://x.com/hdslaa/status/1490683184631087107
@son_tyo23623 2022-02-07 23:24:27: https://x.com/son_tyo23623/status/1490692940234387456
@minami777333 2022-02-08 01:48:39: https://x.com/minami777333/status/1490729230518603778
@LythyMay 2022-02-08 06:31:15: https://x.com/LythyMay/status/1490800347480084481
ほか 8 投稿を確認
この記事では、Posfie上の投稿をそのまま長文転載するのではなく、公開記事として読めるように要点を整理し直しました。画像内のコードや画面は、判読できる範囲で本文またはコードブロックへ再構成しています。
