シートの内容をファイル出力するには

シートの内容をテキストファイルに出力するには、大きく2つの処理が必要になります。

1つはシートのセルのデータの取得で、もう1つはファイルへの出力処理です。

データの取得はUsedRangeプロパティで入力されている全てセル範囲とします。UsedRangeプロパティで取得できる範囲については「VBAで入力済みセル範囲を判定する(UsedRange)」をご参照ください。

ファイル出力はFileSystemObjectクラスを利用します。

事前準備

FileSystemObjectを利用するためには参照設定が必要です。

VBA画面のツールメニュー→参照設定で、Microsoft Scripting Runtimeにチェックを付けます。

ソースコード

シートの内容をファイル出力するコードです。

アクティブシートの入力内容をブックと同じフォルダにテキストファイルを出力します。

ファイル名はアクティブシートのシート名+.txtです。

行は改行、列はタブ文字で区切っています。

 

使い方

ファイル化したいシートを開いた状態にして上の関数を実行します。

44行目と45行目のコメントですが、これはテキストファイルの改行コードを変更したい場合に使います。

43行目のWriteLineメソッドは文字列に改行コードを付与してファイルに出力しますが、改行コードはCRLFになります。

改行コードをLFにしたい場合などはWriteLineメソッドではなくWriteメソッドでvbLfなどの改行コードを個別に設定します。その際には27行目のvbCrLfも同じように対応します。

実行前のシート

A列と1行目にはデータが未設定になっています。

UsedRangeプロパティはB2セルからE10セルがデータ取得範囲になります。

実行後に出力されたファイル

シートに入力されている表示形式のままテキストファイルに出力されています。

CSVファイルに出力したい場合

CSVファイルに出力したい場合は上のコードの2か所を修正します。

1つ目は拡張子です。11行目のファイル名の拡張子を変更します。

変更前

変更後

2つ目はタブ文字をカンマに変更すればOKです。

具体的には34行目を以下のように変更してください。

変更前

変更後

 

セルに表示された内容ではなくデータを出力したい場合

上のコードは各セルのTextプロパティを使っているため、見たままの内容がテキストファイルに出力しています。

そうではなく、セルに設定されている値を出力したい場合はTextプロパティではなくValueプロパティを使います。
変更前

変更後

.Textを.Valueに変更した場合に、先のワークシートを出力した場合は以下のように出力されます。