【VBA入門】FileSystemObjectを使ってテキストファイルへ書き込む

FileSystemObjectを使ってテキストファイルへ書き込む

この記事では、ExcelVBAでFileSystemObjectを利用してテキストファイルへ文字列を書き込みする方法について説明しています。

 

FileSystemObjectは、ファイルの書き込みやフォルダの操作をしたい時に使える便利なライブラリです。

 

FileSystemObjectが持っている「OpenTextFile関数」を使うと、指定したテキストファイルを開くことができます。

 

OpenTextFile関数」では、以下の3つのモードでファイルを開くことができます。

  1. 読み込みモード(ファイルを読み取り専用として開き、書き込みすることはできません)
  2. 書き込みモード(ファイルを書き込み専用として開き、すでにファイルが存在する場合上書きします)
  3. 追記モード(ファイルを書き込み専用として開き、すでにファイルが存在する場合ファイルの末尾に追記します)

 

また、「OpenTextFile関数」でテキストファイルを開くと、「TextStream」オブジェクトを返します。

 

この「TextStream」を利用すると、ファイルの読み込みや書き込みなどのファイルの操作ができます。

 

 

TextStream」では、以下の3種類の書き込み方法を利用することができます。

  1. テキストファイルに指定された文字列を書き込む(Write)
  2. テキストファイルに指定された文字列と改行を書き込む(WriteLine)
  3. テキストファイルデータを1文字ずつ読み込む(WriteBlankLines)

 

それでは、テキストファイルへ書き込みする方法について、説明していきます。

 

FileSystemObjectを利用してテキストファイルを読み込む方法については、以下を参照してください。

【VBA入門】FileSystemObjectを使ってテキストファイルを読み込む

 

書き込むファイルパスや書き込む文字列を指定するシートを準備する

書き込むテキストファイルパス、書き込みたい文字列、書き込みモードを指定するシートを用意します。

ファイル書き込みシートを作成する

ファイル書き込みシートを作成する

 

  1. 「ファイル書き込み」という名前のシートを作成します。
  2. A1セルに「書き込むファイルパス」のタイトル行を作成します。
  3. A2セルに「書き込むファイルパス」の入力欄を作成します。
  4. A3セルに「書き込む文字列」のタイトル行を作成します。
  5. B3セルに「書き込みモード」のタイトル行を作成します。
  6. A4セル以降には、実際に書き込みたい文字列を入力する欄になります。
  7. B4セル以降には、A列に指定した文字列の書き込みモードを指定する欄になります。

 

それでは、テキストファイルへ書き込みする方法を1つずつ説明していきます。

「テキストファイルへ文字列を書き込む」機能の作り方

それでは、VBAプログラムでFileSystemObjectを利用して、テキストファイルへ書き込みする機能を作成します。

指定された文字列と書き込みモードに従って、テキストファイルに文字列を書き込みします。

 

開発タブの「Visual Basic」をクリックして、「Microsoft Visual Basic for Applications」を起動します。

Microsoft Visual Basic for Applicationsを起動する

Microsoft Visual Basic for Applicationsを起動する

 

「Microsoft Visual Basic for Applications」にVBAプログラムを入力します。

 

テキストファイルに文字列を書き込む機能を作成する

テキストファイルに文字列を書き込む機能を作成する

 

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

 

最後にEXCELを「◯◯◯.xlsm」というような感じでマクロ有効ブック形式で保存します。

 

「テキストファイルに文字列を書き込む」機能の使い方

それでは、指定したテキストファイルに文字列を書き込む機能の使い方を説明します。

 

A2セルに書き込むファイルパスを入力します。

次に、書き込みたい文字列と書き込みモードを入力します。

テキストファイルに文字列を書き込む機能の使い方

テキストファイルに文字列を書き込む機能の使い方

 

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

マクロボタンを押す

マクロボタンを押す

 

「FileWrite」を選択して、「実行」ボタンをクリックします。

作成したマクロを実行する

作成したマクロを実行する

 

A2セルに指定した「書き込むファイルパス」は、存在しないテキストファイルを指定しています。

存在しないテキストファイルを指定する

存在しないテキストファイルを指定する

 

「FileWrite」を実行すると、テキストファイルが作成されました。

指定したテキストファイルが作成された

指定したテキストファイルが作成された

 

作成されたテキストファイルの中身は、以下になります。

作成したテキストファイルの中身

作成したテキストファイルの中身

指定したテキストファイルは存在していませんでした。

ですから、テキストファイルを新規作成して、指定した文字列が書き込まれました。

また、指定した文字列と書き込みモードに従って、文字列がテキストファイルに書き込みされました。

 

ちなみに、すでにテキストファイルが存在する状態で、「FileWrite」を実行すると以下のようになります。

すでに存在するテキストファイルに書き込み

すでに存在するテキストファイルに書き込み

1回目で書き込まれた文字列のあとに、2回目の文字列が追記されています。

 

「テキストファイルに文字列を書き込む」機能のVBAプログラム(FileWrite)の説明

まず、共通で利用するファイルオープンモードを指定する変数を作成しておきます。

ファイルオープンモードを指定する値を作成する

まずは、ファイルを開く方法を指定する列挙型変数(Enum)を作ります。

ファイルを開く方法は、以下の3つがあります。

  • 読み取りモード
  • 書き込みモード
  • 追記モード

 

このあとで説明する「テキストファイルに文字列を書き込む」機能で、ファイルオープンモードは利用します。

 

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

①利用するシートを変数に格納する

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

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

何度も「ThisWorkbook.Sheets(“ファイル書き込み”)」と入力するより、「sht」と入力するほうがコードが少なくてよいからです。

 

②FileSystemObjectを変数に格納する

ここでは、ファイル操作に必要な「FileSystemObject」を変数に格納しています。

 

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

ここでは、書き込むテキストファイルパスを変数に格納しています。

 

④ファイルの存在有無により、オープンモードを切り替えて、ファイルを開く

ここでは、「FileSystemObject」を利用して、指定されたファイルが存在するか確認しています。

ファイルがすでに存在する場合、追記モードでファイルを開いています。

ファイルが存在しない場合、書き込みモードでファイルを開いています。

 

「OpenTextFile」関数は、テキストファイルを操作可能な「TextStream」オブジェクトを返しますので、変数「ts」に格納しています。

また、「OpenTextFile」関数にファイルパス(filePath)とオープンモード(追記モードまたは書き込みモード)、最後にファイル作成有無(True:作成する、False:作成しない)を渡しています。

 

⑤書き込む文字列が指定されている最終行まで繰り返す

ここでは、「TextStream」オブジェクトを利用してテキストファイルに指定された文字列を書き込みしています。

書き込む文字列が指定されている最終行まで、書き込みを続けます。

つまり、A列のセルが空の行まで繰り返しします。

 

⑥ファイルへ文字列を書き込む

書き込みモード=1(改行なし)が指定されている場合、改行なしで指定された文字列をファイルに書き込みしています。

書き込みモード=2(改行あり)が指定されている場合、指定された文字列と改行をファイルに書き込みしています。

 

⑦開いたファイルを閉じる

ここでは、「TextStream」オブジェクトを閉じています。

つまり、開いたテキストファイルを閉じています。

使い終わったテキストファイルは、閉じるようにしましょう。

なぜなら、開いたままにしているとそのテキストファイルに書き込むことができないからです。

 

⑧メモリを開放する

ここでは、使い終わったメモリを開放しています。

 


 

FileSystemObjectを利用してテキストファイルへ文字列を書き込みする方法を説明しました。

 

以下について、やりたいことや状況に応じて、テキストファイルへ文字列を書き込みする方法を切り替えましょう。

  • ファイルが存在しない場合・存在する場合
  • 追記する場合・新規で書き込みする場合
  • 書き込みモードを改行あり・改行なし

 

以上です。

 

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

 

コメントを残す

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