スポンサーリンク

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


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

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

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

スポンサーリンク

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

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

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

シート設計

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

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

Image

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

image

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

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

Image

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

image

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

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

image

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

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

Image

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

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

image

会社ごとのデータ

このように会社ごとの「科目コードと科目名」のデータがあり、対象となる会社を変える場合には「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 ファイルを選択する際に開くフォルダはマクロを実行する毎に異なるので、ファイルを探すのが面倒くさい場合があります。

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

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

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

4、まとめ

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

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

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