CreateObject(“Scripting.FileSystemObject”) とは(Excel VBA)

以前お話ししました

指定したフォルダ内とサブフォルダ内全てのファイル名を取得(Excel VBA)

の続きのお話です。

Dim FSO As Object


Set FSO = CreateObject("Scripting.FileSystemObject")
For Each s_fd In FSO.GetFolder(pt).SubFolders
    Call ファイル名一覧取得(s_fd.Path, ws, t_row)
Next s_fd
Set FSO = Nothing

変数「FSO」にセットしているのは「FileSystemObject」というオブジェクトです。

FileSystemObject

ファイルやフォルダは、セルやシートと違って、Excel上には存在しない外部オブジェクトです。

なので、VBAでファイルやフォルダを操作する(作成、削除、移動、コピー等)ときには、「FileSystemObject」というオブジェクトを使用しないといけません。

では、Excel上に存在しない外部オブジェクト「FileSystemObject」を使用するにはどうしたらいいのでしょうか?

私はCreateObject 関数を使用します。

CreateObject関数

CreateObject関数を利用することで、FileSystemObjectを使うことができるようになります。

【CreateObject 関数の利用方法】

Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")

***変数「FSO」を利用した処理***

Set FSO = Nothing
  1. まず、変数「FSO」をObjectとして宣言します。
    参照設定をしていないので、「FileSystemObject」への宣言はできません。

    Dim FSO As Object

  2. 次に、CreateObject関数を利用して、変数「FSO」にFileSystemObjectをセットします。

    Set FSO = CreateObject(“Scripting.FileSystemObject”)


    この記述をすることで、変数「FSO」をFileSystemObjectとして使うことができます。
     
  3. 処理の最後に、変数「FSO」を解放します。

    Set FSO = Nothing

CreateObject関数ではなく参照設定を利用する方法もあります。しかし、参照設定では、バージョンの違いでエラーが出ることがあります。
私が業務で作る場合は、色々なPC環境で色々な方が使用することが多いので、参照設定は使用しないようにしています。

CreateObject関数参照設定の違いにつきましては

FileSystemObject CreateObject関数を使う方法・ 参照設定を使う方法 違いを理解してエラー防止

をご参照ください。

GetFolderメソッド

指定したパスのフォルダーオブジェクトを返します。

【SubFoldersプロパティ】

フォルダーオブジェクトには、対象のフォルダのサブフォルダを取得するSubFoldersプロパティがあります。

フォルダーオブジェクト.SubFolders

今回は、For Eachを使って、変数「s_fd」に、対象フォルダ(変数Ptにセットされたパスのフォルダ)のサブフォルダを順番に格納する処理しています。

For Each s_fd In FSO.GetFolder(Pt).SubFolders
・
・
Next  s_fd

変数「s_fd」にサブフォルダを格納することで、

s_fd.Path:サブフォルダのパス

と、情報を得ることができます。

【参考】

指定したフォルダ内のファイル名全てを取得(Excel VBA)
変数でよく使われる「buf」「tmp」の意味
Dir関数が取得するファイルの順番
指定したフォルダ内のフォルダ名全てをGetAttrを使って「エラー53 ファイルが見つかりません。」を出さずに取得(Excel VBA)
GetAttrとは?「= vbDirectory」ではなく「And vbDirectory」となるビット演算の疑問
フォルダ名だけを取得したい時に出てくる 「.」 と 「..」 とは?
指定したフォルダ内とサブフォルダ内全てのファイル名を取得(Excel VBA)
CreateObject(“Scripting.FileSystemObject”) を使ってサブフォルダを取得
再帰処理とは?フォルダ内とサブフォルダ内全てのファイル名を取得(Excel VBA)
指定したフォルダ内のサブフォルダのフォルダ名を全部取得(Excel VBA)
再帰処理とは?フォルダ内のサブフォルダのフォルダ名を全部取得(Excel VBA)
参照渡し「ByRef」と値渡し「ByVal」の違い(Excel VBA)
ファイルのフルパスからファイル名のみを取得 InStrRev関数(Excel VBA)
指定したフォルダの全ての階層のフォルダ名・サブフォルダ名・ファイル名を取得(Excel VBA)
FileSystemObjectとは?CreateObject 関数 FolderExists・GetFolderの使い方
FileSystemObject CreateObject関数を使う方法・ 参照設定を使う方法 違いを理解してエラー防止
再帰処理とは?指定したフォルダの全ての階層のフォルダ名・サブフォルダ名・ファイル名を取得(Excel VBA)
ファイルのフルパスからファイル名のみを取得 Split関数(Excel VBA)
Callステートメントとは 引数 括弧()の使い方(Excel VBA)
指定したフォルダ内から「特定の文字を含まないファイル名」を取得(Excel VBA)
ワイルドカードとは。使い方いろいろ。(Excel)
Dir関数の使い方。ファイル名やフォルダ名の取得方法。(Excel VBA)
指定したフォルダのファイル名を取得し、そのファイル名を一括で変換(Excel VBA)
Excel起動時に「コンパイルエラー」。64ビット システムで Declareステートメントに、PtrSafe属性を設定(Excel VBA )
「ファイルを開く」ダイアログボックス から ファイル名を取得(Excel VBA)
「ファイルを開く」ダイアログボックス から 複数 ファイル名を取得(Excel VBA)

■■■スポンサーリンク■■■