【Excel VBA】FileSystemObjectの設定と使い方

りゅう

こんにちは!りゅう(@ryupong_b)です。
今回は、FileSystemObjectの設定や使い方を解説します。

はじめに

今回は、FileSystemObjectを使うための設定方法と使い方を解説します。
「FileSystemObjectとは」という基本から、「設定方法」「コーディング」まで丁寧に解説します。

この記事を読むメリット
  • FileSystemObjectの構成や基本知識が分かります。
  • FileSystemObjectを使用するための設定を画像付きで解説します。
  • コーディングの注意点などを、サンプルコードを用いて解説します。

前提

FileSystemObjectとは

ドライブやフォルダ、ファイルを操作するためのオブジェクトです。
FileSystemObjectには、3つのコレクションと 4種類のオブジェクトが用意されています。
非常にシンプルな構成となっているので、ソースコードの可読性も向上します。

#コレクションオブジェクト説明
1DrivesDrive ドライブの情報取得
ドライブを操作
2FoldersFolder フォルダの情報取得
フォルダを操作
3FilesFile ファイルの情報取得
ファイルを操作
4TextStream テキストファイルの情報取得
テキストファイルを操作
FileSystemObject – コレクションとオブジェクト
FileSystemObjectのイメージ図

設定の手順

FileSystemObjectを使用するためには、参照設定という設定が必要となります。
以下に設定の手順を示します。

STEP
参照設定を開く

VBEの画面から、「ツール > 参照設定」を選択します。

参照設定
STEP
Microsoft Scripting Runtimeを有効にする

参照設定ウィンドウより、「Microsoft Scripting Runtime」のチェックマークを付け、「OK」ボタンをクリックします。

参照設定 – Microsoft Scripting Runtime

FileSystemObjectを使用したコーディング

参照設定を終えた後、具体的にどのように使用するかをご説明します。
大きく分けて以下の3ステップでの使用が可能です。

FileSystemObjectを使用する 3ステップ
  • インスタンスを生成する
  • FileSystemObjectを使用する
  • インスタンスを解放する

インスタンスを生成する

FileSystemObjectを使用する前には、インスタンスというものを生成する必要があります。
インスタンスを生成する方法としては 2つのパターン があり、それぞれ解説します。

クラス変数とインスタンス生成を別々に実施する

まずはFileSystemObjectのクラス変数を宣言し、Newキーワードを用いてインスタンスを生成します。
(オブジェクト型の変数には、Setステートメントを使用してください。)

サンプルコード
Public Sub useFileSystemObject()

    ' FileSystemObject型の変数を宣言
    Dim fso As FileSystemObject

    ' インスタンスを生成
    Set fso = New FileSystemObject
End Sub

インスタンスとは
クラス変数の時点では設計図のような状態となっており、実態が無い状態となります。
オブジェクト型変数は、インスタンスを生成して初めて使用することが出来ます。

クラス変数宣言と同時にインスタンスを生成する

クラス変数を宣言すると同時に、インスタンスを生成することが可能です。

サンプルコード
Public Sub useFileSystemObject()

    ' FileSystemObjectインスタンスを生成
    Dim fso As New FileSystemObject
End Sub
めい

1行で表現できるので、ソースコードがスッキリします。

FileSystemObjectを使用する

前述の通り、FileSystemObjectを使用して、ファイルやフォルダ、ドライブの処理を呼び出すことが出来ます。
以下の例では、「ファイルの存在チェック」を実施しています。

サンプルコード
Public Sub useFileSystemObject()

    ' FileSystemObject型の変数を宣言
    Dim fso As New FileSystemObject

    ' ファイルの存在チェック
    If fso.FileExists("C:\Users\xxx\Desktop\vba-hack\testFile.txt") Then

        ' ファイルが存在する
        MsgBox "ファイルが存在します。"
    End If

End Sub

インスタンスを解放する

オブジェクト型変数は、通常の変数とは異なり解放処理が必要となります。
使い終わったタイミングで、Nothingを代入しインスタンスを解放しましょう。

サンプルコード
Public Sub useFileSystemObject()

    ' FileSystemObject型の変数を宣言
    Dim fso As New FileSystemObject

    ' ファイルの存在チェック
    If fso.FileExists("C:\Users\xxx\Desktop\vba-hack\testFile.txt") Then

        ' ファイルが存在する
        MsgBox "ファイルが存在します。"
    End If

    ' インスタンスの解放
    Set fso = Nothing
End Sub

最後に

今回は、FileSystemObjectの使用方法と設定について解説しました。
FileSystemObjectは、参照設定をしたりインスタンスを作成・解放をしたりする手間があるものの、メソッド・プロパティのネーミングがシンプルなので、可読性が向上すると思っています。

この記事が、皆さんのお力になれば幸いです!

オススメの書籍
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大手外資系コンサルティングファーム勤務。ExcelVBA歴は8年。金融関係のプロジェクトにて約100万レコードを処理するマクロの開発実績あり。ExcelVBAの基礎・応用情報を発信中。

コメント

コメントする

CAPTCHA