はじめろぐ

マクロ(Excel VBA)で CSV ファイルを開いてシートの中に取り込む方法

会計税務ソフトや IT 機器でデータを CSV 入出力ができるか否かは重要です。

拡張子が「.csv」となっているファイルのことをCSVファイルと言います。(同様のものとしてテキストファイルなどもあります。)CSVとはデータの形式のことをいい、ずっと昔から存在します。私は、日頃よくCSVファイルを使います。CSVファイルの主な用途は・データの受け渡し・データの加工です。1、会計税務ソフト、IT機器でのCSV入出力CSV入出力機能は会計ソフト間でデータの受け渡しに使えます。例えば、弥生会計の仕訳データをJDLに移したい場合、このように↓します。①弥生会計で仕訳データを出力(エクスポート)して CSV ファイル...
全ての会計税務ソフト・IT機器にCSV入出力機能を付けて欲しい - My タックスノロジー

データをCSV 出力できれば、そのデータを Excel シート上に取り込んで使うことができます。

今日は、選択した CSV ファイルの中身を Excel シート上に取り込むマクロ(Excel VBA)を実例を示しながら紹介します。

スポンサーリンク

1、CSV 出力したデータの使い方

実例として、「科目コードと科目名」のデータが入った CSVファイルを選択して Excel シートに取り込んで使う場合を考えてみます。

シート上に入力した科目コードから科目名を検索できるようにします。

シート設計

Excel シート上に「メイン画面」と「CSVデータ取込み」の2つのシートがあります。

「メイン画面」シートはこのように↓なっています。

黄色の「CSVデータ取込み」ボタンをクリックすればマクロが実行して、CSVファイルを選択できます。

そして選択した CSV ファイルがもう一つの「CSVデータ取込み」シートに取り込まれます。

「CSVデータ取込み」シートは何も取り込んでいない状態では白紙です↓

取り込むとズラッとデータが入ってきます↓

さて、「メイン画面」シートのセル「D8」には以下の数式を埋め込んであります。

「=VLOOKUP(D7,CSVデータ取込み!$A$8:$B$300,2)」

VLOOKUP 関数を用いて、入力した科目コードに該当する科目名を「CSVデータ取込み」シートの該当する箇所から検索しているわけですね。

具体的には、「メイン画面」シートのセル「D7」に入力した科目コードと一致する値を「CSVデータ取込み」シートのセル「A8~B300」の範囲の一番左側の列(A列)から調べ出して、該当する行の左から2列目(B列)の科目名を抽出しています。

VLOOKUP 関数の使い方については、これまでに何度か記事にしているので参考にして下さい。

Excel(エクセル)でデータの一覧から、条件に一致する情報を取り出したいときがあると思います。そんなときに使える便利な関数が、VLOOKUP 関数です。この関数を使えば、例えば・「従業員の名前」という条件から「年齢」という情報を引っ張り出す・「生徒の名前」という条件から「テストの点数」という情報を引っ張り出すといったことができます。今日はこのVLOOKUP 関数の使い方について説明します。1、条件から情報を検索するVLOOKUP 関数 は「=VLOOKUP(検索値,範囲,列番号,検索方法)」となり4つの引数を用います。少々ややこしい関...
Excel(エクセル) VLOOKUP 関数の基本的な使い方、検索方法をFALSEにして完全一... - My タックスノロジー
Excel(エクセル)でデータの一覧から、条件に一致する情報を取り出す方法として、VLOOKUP 関数について以下の記事で説明しました。VLOOKUP 関数 は「=VLOOKUP(検索値,範囲,列番号,検索方法)」のように4つの引数を用いて記述します。最後の「検索方法」ですが、「TRUE」、「FALSE」のいずれかを入力します。・TRUE  近似一致・FALSE 完全一致上の記事では4つ目の引数「検索方法」を FALSE にしていました。今日は「検索方法」がTRUE の場合のあいまい検索について説明したいと思います。1、「検索値」の候補となるデータが範囲で区...
Excel(エクセル) VLOOKUP 関数の基本的な使い方、検索方法をTRUEにしてあいまい... - My タックスノロジー
Excel(エクセル)で VLOOKUP 関数を用いてデータを検索をする場合において、検索値と一致するデータが存在しないとエラー表示「#N/A」が出てしまいます。今日は、このエラー表示「#N/A」を出さない方法を紹介します。最初に1でVLOOKUP 関数の使い方から説明していますが、不要な方はパスして下さい。1、VLOOKUP 関数の使い方さて、以前にこちらの記事で説明した内容と同じですが VLOOKUP 関数の使い方を説明しておきます。VLOOKUP 関数 は「=VLOOKUP(検索値,範囲,列番号,検索方法)」となり4つの引数を用います。少々ややこしい関数で...
Excel(エクセル) IFERROR 関数を用いて VLOOKUP 関数で検索した値が存在しない場... - My タックスノロジー

さて、「メイン画面」シートのセル「D7」に試しに「612」と入力してみると、該当する科目名「売上高」がセル「D8」に表示されることが分かります。

会社ごとのデータ

このように会社ごとの「科目コードと科目名」のデータがあり、対象となる会社を変える場合には「CSVデータ取込み」ボタンを押して該当する会社の CSVファイルを選択してデータを読み込んで使う前提のものです。

CSVデータがあれば、まずそれを Excel に取り込んで後は自由に使うことができます。

今回のようにVLOOKUP 関数を使って必要な情報を抽出することもできますし、他にもデータを加工して使うことも考えれるでしょう。

2、CSV ファイルを開いてシートの中に取り込むマクロ(Excel VBA)

プログラミングコード

「メイン画面」シートの「CSVデータ取込み」ボタンに組み込んである、CSV ファイルを開いてシートの中に取り込むマクロのプログラミングコードを以下に示します。

コード説明

さて、上記のプロシージャについて説明しますね。

変数の定義

この部分↑では、シート名を入れ込む変数を定義しています。

●「A_Sheet」はExcelファイルのシート名を入れ込む変数
●「Csv_Import_File」は Excelファイルに取り込むCSVファイルの名前を入れ込む変数

です。

シート名の読み込み

ここでは、変数「A_Sheet」に今アクティブになっている(操作している)シートの名前を入れ込んでいます。

このマクロは「メイン画面」シート上で実行されるので、変数「A_Sheet」には「メイン画面」という名前が入ります。

CSVファイルの読み込み

さて、今回のコードの重要なポイントはこの部分↑です。

「Csv_Import_File = Application.GetOpenFilename(“CSVファイル,*.csv”)」

この部分↑は、Application オブジェクトの GetOpenFilename メソッドにより指定したタイプのファイルを選択できるようになります。

GetOpenFilename メソッドは Application.GetOpenFilename(“コメント,ファイル種類“)のように記述します。

「Application.GetOpenFilename(“CSVファイル,*.csv”)」と記述すれば

●コメントは「CSVファイル」
●ファイル種類は「CSV」

ということになります。

コメントの部分は何を書いても問題ありませんが、ファイル種類の部分は取り込みたいファイルの種類をきっちり指定しなければなりません。

CSV であれば「*.csv」
TXT であれば「*.txt」

のように書きます。

「Csv_Import_File = Application.GetOpenFilename(“CSVファイル,*.csv”)」

と記述することで、選択した CSVファイルを変数「Csv_Import_File」に取り込みます。

マクロを実行すると次のような画面が出てきて、CSVファイルのみを選択できるようになります

先ほどの、コメントとファイル種類はウインドウの右下に表示されます。

「If Csv_Import_File = “False” Then Exit Sub」

この部分↑は変数 Csv_Import_File に何も取り込まれなかった場合にプロシージャから出るようにしています。

つまり、CSV ファイルを選択するウインドウが出た際にキャンセルボタンを押すとマクロを終了するということですね。

CSVファイルのデータを Excel シートにコピペ

「ThisWorkbook.Sheets(“CSVデータ取込み”).Range(“A1:ZZ100000”).ClearContents」

ここでは、このワークブックの「CSVデータ取込み」シートのセル「A1~ZZ100000」の範囲の文字を削除しています。

ThisWorkbook とはマクロが組み込まれているワークブックを示します。

ClearContents メソッドは指定した範囲の数式と文字を削除します。

With Workbooks.Open(Csv_Import_File)
    .Sheets(1).Cells.Copy ThisWorkbook.Sheets(“CSVデータ取込み”).Range(“A1”)
    .Close
End With

ここでは名前が「Csv_Import_File」のファイル(選択した CSV ファイル)を開いて、そのファイルの1つ目のシートのすべてのセルをコピーして、このワークブックの「CSVデータ取込み」シートに張り付けています。

「Workbooks.Open(Csv_Import_File)」の Open メソッドによって指定したファイルを開きます。

With Workbooks.Open(Csv_Import_File) ~ End With の間には「Csv_Import_File」というファイルを開いた状態で行う処理を記述します。

「.Sheets(1).Cells.Copy ThisWorkbook.Sheets(“CSVデータ取込み”).Range(“A1”) 」

「.Sheets(1).Cells.Copy」の部分は開いた CSV ファイルのシートのすべてのセルをコピーすることを意味します。

「ThisWorkbook.Sheets(“CSVデータ取込み”).Range(“A1”)」の部分で、コピーしたデータをこのワークブックの「CSVデータ取込み」シートに張り付けることを指示しています。

「.Close」のでは開いた「Csv_Import_File」ファイル(CSV ファイル)を閉じています。

「Worksheets(A_Sheet).Activate」

ここでは「A_Sheet」という名前のワークシートをアクティブ(操作対象)にしています。

これにより処理が終わった後に「メイン画面」シートが開いた状態になります。

3、指定したフォルダからファイルを選択して開く方法

なお、上記で CSV ファイルを選択する際に開くフォルダはマクロを実行する毎に異なるので、ファイルを探すのが面倒くさい場合があります。

いつも同じフォルダ内のファイルを使っている場合などには、開くフォルダを指定したいですよね。

●毎回同じフォルダを開く方法
●前回取り込んだファイルと同じフォルダを開く方法

について、以下の記事で紹介させて頂きますので参考にして頂ければと覆います。

Excel でマクロ(VBA)を使って、選択したファイルを開きたい場合があります。CSV ファイルを選択して開く方法を以前こちらの記事で紹介しました ↓マクロを実行して CSVファイルを選択すると、CSVファイルの中身が「CSVデータ読込み」というシートの中に取り込まれるマクロです。以下の VBA コードになります。Sub Csv_Import() Dim A_Sheet 'Excelファイルのシート名を入れ込む変数' Dim Csv_Import_File 'Excelファイルに取り込むCSVファイルの名前を入れ込む変数' A_Sheet = ActiveSheet.Na...
Excel VBA(マクロ)で指定したフォルダからファイルを選択して開く方法 - My タックスノロジー

4、まとめ

マクロ(Excel VBA)で CSV ファイルを開いてシートの中に取り込む方法を説明しました。

税務会計ソフトや IT 機器から CSV データ出力をすることさえできれば、後はそのデータを Excel に取り込んで自由に使うことができます。

まずは CSV データを取り込む過程が必要なので、同様の用途がある方はこの方法を試してみて下さい。

モバイルバージョンを終了