Ryst work-リーストワーク-

労働対価のコスパ最大化を目指すサラリーマンのストラテジー

【CSVの数字0落ち回避】エクセルUTF-8文字化け対応(VBAコピペマクロあり)

【CSVの数字0落ち回避】エクセルUTF-8文字化け対応(VBAコピペマクロあり)

 

CSVがわかると作業の幅が広がります。

 

【CSVの数字0落ち回避】エクセルUTF-8文字化け対応(VBAコピペマクロあり)

 

システム職でない人でもパソコンでデータを扱う機会が増えてきた昨今、「CSVファイル」の扱いに困ることがあるかと思います。

 

ファイルをダブルクリックで開くと、エクセルの画面で開くことが多いですが、文字化けしていたり、数字の「0」がなくなってしまうこともしばしば。

 

周りの人が困らずに作業していると、自分だけ質問もできない気がしてしまいます。

そこで今回はCSVファイルの扱い方をご紹介します。

 

【この記事を読むメリット 】

  • CSVファイルの扱いに悩まなくなる

 

それでは今回のコンテンツです。

 

   

CSVとは何か

wikipediaによれば、CSVとは、

 

comma-separated values。
いくつかのフィールド(項目)を区切り文字であるカンマ「,」で区切ったテキストデータおよびテキストファイル。

Comma-Separated Values - Wikipedia

 

とあります。

 

例えば、下記のような情報を持ったファイルのことです。
改行はそのままですが、項目の間がカンマで区切られています。

 

No.,商品,値段

1,りんご,100

2,みかん,50

 

これをエクセルで開くと、表のように表示されます。

 

No. 商品 値段
1 りんご 100
2 みかん 50

 

まずは、CSVはデータファイルの種類であり、エクセルはそれを見るためのシステムと解釈しましょう。

 

エクセルを「ファイルの種類」と思ってしまうとわからなくなるので注意。

 

エクセルの機能を使う

エクセルは、データファイルを見るためのシステムです。
しかし、残念ながらいくつか都合の悪いことがあります。

 

  1. 先頭が数字の「0」の場合、「0」がなくなる
  2. 日付を「2019/07/30」としても「07」が「7」になる
  3. 文字コードが特殊(UTF-8など)な場合、開いたときに文字化けする など

 

これはエクセルの仕様であるため、仕方のない動きです。
ファイルを開く際に自動で表示設定をしてしまうので、このようになってしまいます。

 

そんなときは、正しい方法で再度ファイル開きなおしましょう。

方法は2つあります。

 

  1. 手作業でCSVを開く
  2. VBAマクロを書く

 

1.手作業でCSVを開く

エクセルの機能を使うことで、文字化けなし、0落ちなしで読込みをすることができます。

 

1.エクセル上部のデータ をクリック

2.外部データの取り込み>テキストファイル をクリック

 

【CSVの数字0落ち回避】エクセルUTF-8文字化け対応(VBAコピペマクロあり)

 

3.読込み対象のファイルを選択

 

【CSVの数字0落ち回避】エクセルUTF-8文字化け対応(VBAコピペマクロあり)

 

4.「カンマやタブなどの区切り文字によってフィールドことに区切られたデータ」を選択し、文字コードを選択。次へ をクリック

UTF-8の場合はここで文字コードを65001にします。

 

【CSVの数字0落ち回避】エクセルUTF-8文字化け対応(VBAコピペマクロあり)

 

5.区切り文字>カンマを選択し、次へ をクリック

 

【CSVの数字0落ち回避】エクセルUTF-8文字化け対応(VBAコピペマクロあり)

 

6.列を選択し、文字列を選択し、完了 をクリック

 

【CSVの数字0落ち回避】エクセルUTF-8文字化け対応(VBAコピペマクロあり)


7.最後に貼付け先を指定すれば完了です。 

これで元のファイルデータのまま、文字化けなしでデータを開くことができます。

 

【CSVの数字0落ち回避】エクセルUTF-8文字化け対応(VBAコピペマクロあり)

 

もう一度読み込めば問題は解決!

 

2.VBAマクロを書く

シート上に「CommandButton1」を設置し、「CSVデータ取込み」シートを作成した上で下記のコードをVBAコードとしてコピーしてください。

 

赤字のところは読込む列の数(A~AAであれば27)、青字のところは文字コードです。
こちらはUTF-8の文字コードに対応しています。通常のSift-JISを利用したい場合は932としてください。

 

Private Sub CommandButton1_Click()
 
    Dim A_Sheet  'Excelファイルのシート名
    Dim Csv_Import_File  '読込むCSVファイル名
 
    A_Sheet = ActiveSheet.Name  '現在アクティブなシート名
 
    Csv_Import_File = Application.GetOpenFilename("CSVファイル,*.csv")  'CSVファイル選択
    If Csv_Import_File = "False" Then Exit Sub  'キャンセル終了
 
    ThisWorkbook.Sheets("CSVデータ取込み").Cells.Clear '「CSVデータ取込み」シートのデータを全削除
    ThisWorkbook.Sheets("CSVデータ取込み").Cells.NumberFormatLocal
 
    Dim disp_style()
    Dim i
    i = 0
 
    Do While i <= XXX
 
    disp_style(i) = 2
    i = i + 1
 
    Loop
 
    With Sheets("CSVデータ取込み").QueryTables.Add(Connection:="TEXT;" & Csv_Import_File, Destination:=Sheets("CSVデータ取込み").Range("A1"))
        .Name = "test" '名前設定
        .FieldNames = True 'データの列見出し(1行目)太字
        .RowNumbers = False '行番号表示
        .Refresh BackgroundQuery:=False 'バックグラウンド更新
        .RefreshPeriod = 0 '定期更新の時間設定
        .PreserveFormatting = False 'セル書式の保持
        .AdjustColumnWidth = True '列の幅自動調整
        .FillAdjacentFormulas = False 'クエリーテーブルの更新時、数式を自動更新するかを設定する
        .RefreshStyle = xlInsertEntireRows '新規データの行全体を挿入し、使用されていないセルはクリア
        .SavePassword = False 'パスワード保存
        .TextFileParseType = xlDelimited 'カンマやタブなどの区切り文字によってフィールドごとに区切られたデータ
        .TextFileStartRow = 1 '開始列
        .TextFilePlatform = 65001 '文字コード(UTF-8)
        .TextFilePlatform = xlWindows 'OS
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = True '区切り文字=カンマ
        .TextFileSpaceDelimiter = False
        .TextFileTextQualifier = xlTextQualifierDoubleQuote 'ダブルクォーテーション単位でデータを切る
        .TextFileColumnDataTypes = disp_style()
        .Refresh
        .Parent.Names(.Name).Delete
        .Delete
    End With
 
    Worksheets(A_Sheet).Activate    'A_Sheet をアクティブに
 
    MsgBox ("取り込みが完了しました")
 
 
End Sub 

 

このマクロで、読込み対象のCSVを選択後、データの読込みができます。

 

マクロまで使えれば上級者。部署で展開もできるので、人気者に。

 

 

基礎IT知識はこれから必須

CSV自体は難易度は高くありませんが、正しく理解できていない人もまだまだ多い状況です。正しく理解し使いこなせると、社内でも評価も高くなるかもしれません。

 

DMMグループのプログラミングスクールでは、無料相談のほか、転職保証・就職保証まで付いたレッスンが受けられます。
これを機に新しいスキルを身につけてもよいでしょう。

 

 

本当はこんな面白くない仕事したくない、という方はこちら

【求人・サービスで選ぶ】転職を検討している人のための転職会社ランキング