【EXCEL:VBA】入力したデータをCSVファイル形式で出力したい

入力したデータをCSVファイル形式で出力したい

この記事では、EXCELに入力したデータをCSVファイル形式で出力する方法について説明しています。

 

カンマ区切り以外にも指定した文字で項目を区切ることもできます。

 

タブ区切りのテキストファイルも作成できます。

 

 

また、項目をダブルコーテーションでくくりたい場合、そのくくりたい文字を指定すれば可能となります。

 

しかも、出力する範囲をヘッダー行(1行目)で判定するので、途中の行に余計な入力をしていても、問題なく必要な列のみCSV出力可能となっています。

 

一度この機能を作成しておけば、次から簡単にカンマ区切りのCSVファイルやタブ区切りのファイルだって作成できるようになります。

 

 

それでは、EXCELで入力したデータをCSVファイル形式で出力する機能を作成していきましょう。

 

困っている女性

EXCELに入力したデータをCSV形式でファイル出力したいの・・・、わかる!?

困っている女性

EXCELに入力したデータを加工したり、チェックしたのち、他のシステムで取り込む必要があるの。
ファイルの種類を「CSV(カンマ区切り)」を指定すれば、EXCELからCSVファイルを作成できるよね。

解決する男性

困っている女性

それじゃあ、ダメなの。カンマ区切りでしか出力できないし、チェックなんかで余計な列を触っていると、その列まで出力してしまうの。
それなら、VBAを使えば区切り文字や括り文字を指定してCSVファイルを作成することができるよ。

解決する男性

しかも、ヘッダー行で出力する列を判定しているので、そこさえ余計なことをしなければ、余計な列は出力されないよ。

解決する男性

困っている女性

それそれ、早く教えてよ。

 

 

EXCELで入力したデータからCSVファイルを作成する機能に必要なものを、1つ1つ順番に説明していきます。

1.作成するCSVファイル形式を指定するシートを作成する

まず、「区切り文字」、「くくり文字」、「CSVファイルパス」を指定する欄を作成します。

「CSVファイル作成」シートを作成する

「CSVファイル作成」シートを追加する

「CSVファイル作成」シートを追加する

  1. 「CSVファイル作成」という名前のシートを作成します。
  2. 1行目に「区切り文字」と「くくり文字」および「CSVファイルパス」のタイトル行を作成します。
  3. 2行目に「区切り文字」と「くくり文字」および「CSVファイルパス」を入力する欄を作成します

 

ちなみに、「区切り文字」をタブにしたい場合は、「TAB」と入力すれば、タブ区切りでファイルを作成します。

「TAB」以外の文字が入力されていれば、その入力した文字で区切られたファイルを作成します。

「くくり文字」は、入力された文字で以下のように項目をくくります。

くくり文字に「”」を入力した場合、”aaa”,”bbb”のように項目をくくります。

また、くくり文字を未入力にした場合、項目をなにもくくらないので、aaa,bbbのように出力します。

 

2.CSVファイルとして出力したいデータを準備する

それでは、出力したいデータを準備しましょう。

他のEXCELで作成されているデータなら貼り付けましょう。

「データ」シートを作成する

データシートを準備する

データシートを準備する

  1. 「データ」という名前のシートを作成します。
  2. あとは、好きなデータを入力もしくは貼り付けします。

 

上記の画像サンプルでは、1行目に項目のタイトル行(ヘッダー行)を入力していますが、必要ない場合入力しなくてもよいです。

ただし、1行目のデータで出力する列を判断します。

1行目に入力されている最大の列までが、ファイルに出力されます。

また、ファイルに出力される行は、A列に値が入力されている最大行までとなります。

 

3.VBAでCSVファイルを作成する機能を記入する

「Microsoft Visual Basic for Applications」を起動します。

VBAプログラムを記入する(その1)

VBAプログラムを記入する(その1)

 

VBAプログラムを記入する(その2)

VBAプログラムを記入する(その2)

 

標準モジュールを追加して、以下のソースを書きます。

 

4.CSVファイルを作成する機能の使い方

それでは、CSVファイルを作成する方法を説明します。

 

まず、「CSVファイル作成」シートのA2セルに「区切り文字」を入力します。

次に、B2セルに「くくり文字」を入力します。

そして、C2セルに作成するCSVファイルのパスを入力します。

 

CSVファイル作成する機能の使い方

CSVファイル作成する機能の使い方

 

次に、「開発」タブの「マクロ」をクリックします。

 

実行ボタンをクリックする

実行ボタンをクリックする

 

先程作成した自作関数「MainProc」が一覧に表示されていますので、選択します。

次に、「実行」ボタンをクリックしてCSVファイル作成を開始します。

 

少し待つと、CSVファイルが作成されます。

CSVファイルが作成された

CSVファイルが作成された

 

それでは、CSVファイルの中身を見てみましょう。

各項目は、「”」でくくられ、「,」で区切られています。

作成されたCSVファイルの中身

作成されたCSVファイルの中身

 

次に、区切り文字を「TAB」、くくり文字をなしを指定して、実行してみます。

TAB区切りのくくりなしを指定した場合

TAB区切りのくくりなしを指定した場合

 

TAB区切りで、くくりなしのファイルが作成されました。

TAB区切りのくくりなしを指定した場合

TAB区切りのくくりなしを指定した場合のCSVファイルの中身

 

どうですか、簡単でしょ。

もっと大量のデータでも、同じく簡単ですのでやってみてください。

 

5.CSVファイルを作成するVBAプログラムの説明

それでは、VBAプログラムを説明します。

①「CSVファイル作成」シートを変数に格納する

ここでは、このあとの処理で何度も使う「CSVファイル作成」シートを変数に格納しています。

そうすることにより、入力するプログラムを短くすることができるからです。

何度も「ThisWorkbook.Sheets(“CSVファイル作成”)」と入力するより、「shtMain」と入力するほうが少なくてすむからです。

 

②「データ」シートを変数に格納する

ここでは、このあとの処理で何度も使う「データ」シートを変数に格納しています。

 

③区切り文字を変数に格納する

ここでは、「CSVファイル作成」シートのA2セルに入力されている「区切り文字」を変数に格納しています。

ただし、入力された文字が「TAB」の場合、VBAプログラムのTAB文字を指定しています。

それ以外の文字が入力されている場合、その文字を変数に格納します。

 

④くくり文字を変数に格納する

ここでは、「CSVファイル作成」シートのB2セルに入力されている「くくり文字」を変数に格納しています。

 

⑤CSVファイルパスを変数に格納する

ここでは、「CSVファイル作成」シートのセルC2に入力されている「CSVファイルパス」を変数に格納しています。

 

⑥「データ」シートの最終行を取得する

ここでは、「データ」シートに入力されているデータの最終行を取得しています。

「データ」シートの1列目(A列)の値が入力されている最終行を取得します。

A列の最終行(シートに入力可能な最終行)から上に向かって、値が入力されている最初の行を探しています。

 

⑦「データ」シートの最終列を取得する

ここでは、「データ」シートに入力されているデータの最終列を取得しています。

「データ」シートの1行目の値が入力されている最終列を取得します。

1行目の最終列(シートに入力可能な最終列)から左に向かって、値が入力されている最初の列を探しています。

 

⑧「データ」シートに入力されているデータを配列に格納する

ここでは、「データ」シートに入力されているデータを配列に格納しています。

先程、取得した最終行と最終列を利用して、データの入力範囲を指定しています。

配列にデータを一気に格納しているのは、高速に処理を行うためです。

1セルずつ値を取得するより、配列から取得するほうが早いからです。

 

⑨作成するファイルを開く

ここでは、指定されている「CSVファイルパス」で作成するファイルを開いています。

ファイルを開いておかないと、ファイルに値を書き込みできないからです。

 

⑩CSVデータを書き込みする

ここでは、配列に格納したデータをファイルに書き込みしています。

1行目から最終行まで、1行ずつファイルに書き込みします。

1列目から最終列まで、1列ずつ値を取得し、「くくり文字」で値をくくり、「区切り文字」で値同士を区切ります。

最終列のあとは、区切り文字が必要ないので、区切らないようにしています。

1行書き込み(Print)すると、自動的に改行されます。

 

⑪作成するファイルを閉じる

ここでは、作成するファイルを閉じています。

出力したいデータを全て出力し終わったので、ファイルを閉じています。

ファイルを閉じる処理を行わないと、ファイルがいつまでも開いたままになりますので、注意してください。

 

それでは、作成したいデータを「データ」シートに貼り付けして、いろいろなCSVファイルを作成してみましょう。

 

以上です。

 

 

最後まで読んでいただきありがとうございました。
この記事をシェアしていただけると喜びます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です