【EXCEL:VBA】入力したデータをダブルコーテーションくくりでCSVファイル出力したい

入力したデータをダブルコーテーションくくりでCSV出力したい

この記事では、EXCELに入力したデータをダブルコーテーションくくりでCSVファイル出力する方法について説明しています。

 

ダブルコーテーションくくりのCSVファイルを作成することにより、カンマを使った値でも問題なくCSVファイルを作成することができます。

 

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

 

一度この機能を作成しておけば、次から簡単にダブルコーテーションくくりのCSVファイルを作成できるようになります。

 

 

それでは、EXCELで入力したデータをダブルコーテーションくくりで出力する機能を作成していきましょう。

 

困っている女性

EXCELに入力したデータをダブルコーテーションくくりでCSVファイルを作成したいの・・・、わかる!?

困っている女性

カンマを含むデータをCSVファイルとして出力する必要があるの。
それなら、VBAを使えば簡単にダブルコーテーションくくりでCSVファイルを作成することができるよ。

解決する男性

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

解決する男性

困っている女性

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

 

◆EXCELに入力したデータからカンマ区切りのCSVファイルを作成する方法については、以下の記事を参照してください。

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

 

◆入力したデータをタブ区切りで出力する方法については、以下の記事を参照してください。

入力したデータをタブ区切りで出力したい 【EXCEL:VBA】入力したデータをタブ区切りで出力したい

 

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

1.作成するファイルパスを指定するシートを作成する

まず、出力するファイルパスを指定する欄を作成します。

「メイン」シートを作成する

メインシートを作成する

メインシートを作成する

  1. 「メイン」という名前のシートを作成します。
  2. 1行目に「出力ファイルパス」のタイトル行を作成します。
  3. 2行目に「出力ファイルパス」を入力する欄を作成します

 

2.ダブルコーテーションくくりで出力したいデータを準備する

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

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

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

データシートを作成する

データシートを作成する

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

 

2行目のC列「商品名」に、「えんぴつ,ノート」が入力されています。

このデータをそのままCSVファイルを作成すると、2行目は以下のようになります。

2020/6/1,鈴木,えんぴつ,ノート,200,5,1000

 

3行目は以下のようになります。

2020/6/1,鈴木,ボールペン,100,3,300

 

2行目は7項目、3行目は6項目となり、他のシステムやEXCELで開くと項目がズレてしまいます。

そのため、ダブルコーテーションで値をくくることにより、項目数が変化することを防ぐことができます。

 

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

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

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

つまり、上記の画像では、A列からF列までを対象にファイルに出力されます。

 

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

つまり、上記の画像では、A列が入力されていない14行目以降はファイルには出力されません。

 

3.VBAでダブルコーテーションくくりでCSVファイル出力する機能を記入する

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

VBAプログラムを記入する

VBAプログラムを記入する

 

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

 

4.ダブルコーテーションくくりでCSVファイル出力する機能の使い方

それでは、ダブルコーテーションくくりのCSVファイルを作成する方法を説明します。

 

「データ」シートに出力したいデータを入力しておきます。

次に、「メイン」シートのA2セルに「出力ファイルパス」を入力します。

ダブルコーテーションくくりのファイル作成する機能の使い方

ダブルコーテーションくくりのファイル作成する機能の使い方

 

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

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

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

 

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

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

 

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

ダブルコーテーションくくりのCSVファイルを作成

ダブルコーテーションくくりのCSVファイルを作成

 

それでは、ダブルコーテーションくくりのCSVファイルの中身を見てみましょう。

各項目は、ダブルコーテーションでくくられて出力されています。

ダブルコーテーションくくりでファイルが作成された

ダブルコーテーションくくりでファイルが作成された

 

ちなみに、このCSVファイルをEXCELで開いても、問題なく全ての行が6項目として認識されます。

ダブルコーテーションくくりのファイルをEXCELで開く

ダブルコーテーションくくりのファイルをEXCELで開く

 

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

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

 

5.ダブルコーテーションくくりのCSVファイルを作成するVBAプログラムの説明

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

①「メイン」シートを変数に格納する

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

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

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

 

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

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

 

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

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

 

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

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

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

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

 

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

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

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

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

 

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

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

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

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

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

 

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

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

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

 

⑧ダブルコーテーションくくりのデータを書き込みする

 

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

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

1列目から最終列まで、1列ずつ値を取得し、ダブルコーテーションで値をくくります。

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

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

 

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

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

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

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

 

それでは、作成したいデータを「データ」シートに貼り付けして、ダブルコーテーションくくりのCSVファイルを作成してみましょう。

 

以上です。

 

 

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

 

コメントを残す

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