アクセス上位ページ
 
最近の更新内容
(1).概要 ⇐ [PREV]

Excel VBA ≫ 3.FSO - 概要(1)-a.ファイルシステムオブジェクトの構成

ファイルシステムオブジェクト(FSO)の構成

ファイルシステムオブジェクトとはファイルやフォルダ、ドライブを操作するためのオブジェクトです。 ファイルシステムオブジェクト内には以下のオブジェクトとコレクションが含まれており、これらのオブジェクトについて操作が可能です。



  • FileSystemObject
  • メインオブジェクト。ファイルやフォルダのパスを指定することで関連オブジェクトを簡単に操作することが可能。
    • File
    • ファイルオブジェクト。ファイルのタイムスタンプなども取得可能。
    • Files
    • ファイルオブジェクトの集合体(コレクション)。
      オブジェクトの数は .Count プロパティで取得可能。
    • Folder
    • フォルダオブジェクト。フォルダ内のファイルやサブフォルダを取得して、再帰的に処理することが可能。
    • Folders
    • フォルダオブジェクトの集合体(コレクション)。
      オブジェクトの数は .Count プロパティで取得可能。
    • Drive
    • ドライブオブジェクト。リムーバルドライブやネットワークドライブの情報も取得可能。
    • Drives
    • ドライブオブジェクトの集合体(コレクション)。
      オブジェクトの数は .Count プロパティで取得可能。
    • TextStream
    • オープン済みのテキストファイルオブジェクト。
      テキストファイルに対してシーケンシャルに読み書きが可能。


    ファイルやフォルダの操作は『 関数リファレンス - ファイル・フォルダ操作 』で掲載した関数およびステートメントでも可能ですが、 ファイルシステムオブジェクトの方がより細かな操作が可能になります。

    当ページの後半に、ファイルシステムオブジェクトのプロパティおよびメソッドと、対応する関数およびステートメントをまとめてみました。 なお、いくつかの操作については2つの実現方法が存在するので、どのオブジェクトのプロパティおよびメソッドなのかしっかり区別してください。

    例えば、ファイルをコピーする操作には以下の2つの方法が存在します。
    • <方法1> ファイルシステムオブジェクトCopyFile メソッドを使用する
    • <方法2> ファイルオブジェクトCopy メソッドを使用する

    このどちらを使うかは、そのときの処理内容により判断します。 通常、処理の途中でファイルオブジェクトを取得済みであれば<方法2>、 ファイルオブジェクトを取得していないのであれば<方法1>を使用します。


ファイル操作に関連するプロパティ・メソッド

  • 下表の "fso" はファイルシステムオブジェクトを表します。
  • 下表の "file" はファイルオブジェクトを表します。

内容 FileSystemObjectの
プロパティ/メソッド
対応する関数/
ステートメント
ファイルオブジェクト取得 fso.GetFile -
ファイル存在チェック fso.FileExists Dir関数
ファイルベース名取得 fso.GetBaseName -
ファイル拡張子取得 fso.GetExtensionName -
ファイル名取得 fso.GetFileName
file.Name
Dir関数
ファイル属性取得・設定 file.Attributes GetAttr関数
ファイルパス取得 file.Path -
ファイルサイズ取得 file.Size FileLen 関数
LOF 関数
ファイルタイプ取得 file.Type -
ファイル作成日時取得 file.DateCreated -
ファイル最終アクセス
日時取得
file.DateLastAccessed -
ファイル最終更新
日時取得
file.DateLastModified -
親フォルダ取得 fso.GetParentFolderName
file.ParentFolder
-
ドライブ名取得 fso.GetDriveName
file.Drive
-
ファイル新規作成 fso.CreateTextFile Open ステートメント
テキストファイル入出力
ファイルオープン fso.OpenTextFile
file.OpenAsTextStream
Open ステートメント
テキストファイル入出力
ファイル名変更 file.Name Name ステートメント
ファイル移動 fso.MoveFile(※1)
file.Move
Name ステートメント
ファイルコピー fso.CopyFile(※1)
file.Copy
FileCopy
ステートメント
ファイル削除 fso.DeleteFile(※1)
file.Delete
Kill ステートメント
(※2)


※1 ・・・ ワイルドカードを使用することで複数のオブジェクトを同時に操作することが可能。
<使用可能なワイルドカード>
  * (アスタリスク):任意の数(0以上)の文字を表します。
  ? (クエスチョン):任意の1文字を表します。
※2 ・・・ 読み取り専用ファイルは削除不可。

フォルダ操作に関連するプロパティ・メソッド

  • 下表の "fso" はファイルシステムオブジェクトを表します。
  • 下表の "folder" はフォルダオブジェクトを表します。

内容 FileSystemObjectの
プロパティ/メソッド
対応する関数/
ステートメント
フォルダオブジェクト取得 fso.GetFolder -
フォルダ存在チェック fso.FolderExists Dir関数
フォルダ名取得 folder.Name Dir関数
フォルダ属性取得 folder.Attributes GetAttr関数
フォルダパス folder.Path -
フォルダタイプ取得 folder.Type -
フォルダ作成日時取得 folder.DateCreated -
フォルダ最終アクセス
日時取得
folder.DateLastAccessed -
フォルダ最終更新
日時取得
folder.DateLastModified -
親フォルダ取得 fso.GetParentFolderName
folder.ParentFolder
-
ドライブ名取得 fso.GetDriveName
folder.Drive
-
フォルダ内の
ファイル取得
folder.Files Dir関数
フォルダ内の
サブフォルダ取得
folder.SubFolders Dir関数
ファイル新規作成 folder.CreateTextFile Open ステートメント
テキストファイル入出力
フォルダ作成 fso.CreateFolder MkDir、RmDir
ステートメント
フォルダ名変更 folder.Name Name
ステートメント
フォルダ移動 fso.MoveFolder(※1)
folder.Move
-
フォルダコピー fso.CopyFolder(※1)
folder.Copy
-
フォルダの削除 fso.DeleteFolder(※1)
folder.Delete
MkDir、RmDir
ステートメント
カレントフォルダ取得 - CurDir関数
カレントフォルダ変更 - ChDir、ChDrive
ステートメント


※1 ・・・ ワイルドカードを使用することで複数のオブジェクトを同時に操作することが可能。
<使用可能なワイルドカード>
  * (アスタリスク):任意の数(0以上)の文字を表します。
  ? (クエスチョン):任意の1文字を表します。


ドライブ操作に関連するプロパティ・メソッド

  • 下表の "fso" はファイルシステムオブジェクトを表します。
  • 下表の "drive" はドライブオブジェクトを表します。

内容 FileSystemObjectの
プロパティ/メソッド
対応する関数/
ステートメント
ドライブオブジェクト取得 fso.GetDrive -
ドライブ存在チェック fso.DriveExists Dir関数
ドライブ名取得 drive.DriveLetter -
ルートフォルダ取得 drive.RootFolder -
ドライブパス取得 drive.Path -
ドライブタイプ取得 drive.DriveType -
ドライブ状態取得 drive.IsReady -
トータルサイズ取得 drive.TotalSize -
利用可能領域取得 drive.AvailableSpace -
空き領域取得 drive.FreeSpace -
ボリューム名取得 drive.VolumeName -
ドライブ取得
(コレクション)
fso.Drives -
カレントドライブ変更 - ChDir、ChDrive
ステートメント


テキストストリーム操作に関連するプロパティ・メソッド

  • 下表の "tso" はテキストストリームオブジェクトを表します。

内容 FileSystemObjectの
プロパティ/メソッド
対応する関数/
ステートメント
ファイルポインタ
位置取得
tso.Line
入力モード出力モード
-
行のカラム位置取得
(行頭からの文字数)
tso.Column
入力モード出力モード
-
文字列書き込み tso.Write -
空白行書き込み tso.WriteBlankLines -
文字列書き込み
(自動的に改行)
tso.WriteLine Print #
または Write #
ステートメント
テキストファイル入出力
文字列読み込み tso.Read -
1行読み込み tso.ReadLine Line Input #
または Input #
ステートメント
テキストファイル入出力
ファイル全体読み込み tso.ReadAll -
指定文字数スキップ tso.Skip -
指定行数スキップ tso.SkipLine -
ファイル末尾判定 tso.AtEndOfStream EOF関数 関数
行末尾判定 tso.AtEndOfLine -
ファイルクローズ tso.Close Close ステートメント
テキストファイル入出力

カテゴリ内ページ



Page
Top