第119回.ファイルシステムオブジェクト(FileSystemObject)
FileSystemObjectオブジェクトでは、コンピュータのファイル システムへのアクセスが提供されています。
VBAに用意されているファイル操作関連のステートメントや関数より、
より強力で、より多くの機能が搭載されています。
一通り目を通して、どんな機能があるかだけを押さえておき、
必要になったら、その部分を調べるようにしてください。
目次
FileSystemObjectオブジェクトの使用方法
Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objFSO As New FileSystemObject
または、
Dim objFSO As FileSystemObject
Set objFSO = New FileSystemObject
VBEでのメンバー候補表示が有効になるので、調べやすくなりますし、入力も楽になります。
FileSystemObjectオブジェクトのプロパティとメソッド
FileSystemObjectオブジェクトのプロパティ
プロパティ | 説明 |
Drives | ローカル マシンで利用できるすべての Drive オブジェクトが入った Drives コレクションを返します。 |
FileSystemObjectオブジェクトのメソッド
メソッド | 説明 | 構文 |
BuildPath | 既存のパスの末尾に名前を追加します | object.BuildPath(path, name) |
CopyFile | ファイルを別の場所へコピーします。 | object.CopyFile ( source, destination[, overwrite] ) |
CopyFolder | フォルダを再帰的に別の場所へコピーします。 | object.CopyFolder ( source, destination[, overwrite] ) |
CreateFolder | フォルダを作成します。 | object.CreateFolder(foldername) |
CreateTextFile | 指定した名前のファイルを作成し、作成したファイルの読み取りまたは書き込みに使用できる TextStream オブジェクトを返します。 | object.CreateTextFile(filename[, overwrite[, unicode]]) |
DeleteFile | 指定されたファイルを削除します。 | object.DeleteFile ( filespec[, force] ) |
DeleteFolder | 指定されたフォルダおよびそのフォルダ内のフォルダとファイルを削除します。 読み取り専用属性が設定されているフォルダーを削除する場合は forceにTrueを指定します。省略時はFalseです。 |
object.DeleteFolder ( folderspec[, force] ) |
DriveExists | 指定されたドライブが存在する場合は、真 (true) を返します。存在しない場合は、偽 (false) を返します。 | object.DriveExists(drivespec) |
FileExists | 指定したファイルが存在する場合は、真 (true) を返します。存在しない場合は、偽 (false) を返します。 | object.FileExists(filespec) |
FolderExists | 指定されたフォルダが存在する場合は、真 (true) を返します。存在しない場合は、偽 (false) を返します。 | object.FolderExists(folderspec) |
GetAbsolutePathName | 指定されたパスの絶対パス名を返します。 | object.GetAbsolutePathName(pathspec) |
GetBaseName | 指定されたパス内に含まれるファイルのベース名 (ファイル拡張子を除いたもの) を表す文字列を返します。 | object.GetBaseName(path) |
GetDrive | 指定されたパスに含まれるドライブに対応する Drive オブジェクトを返します。 | object.GetDrive ( drivespec ) |
GetDriveName | 指定されたパスのドライブ名を返します。 | object.GetDriveName(path) |
GetExtensionName | 指定されたパスの拡張子を表す文字列を返します。 | object.GetExtensionName(path) |
GetFile | 指定されたパスに置かれているファイルに対応する File オブジェクトを返します。 | object.GetFile(filespec) |
GetFileName | 指定されたパスの最後のファイル名またはフォルダ名を返します。 | object.GetFileName(pathspec) |
GetFolder | 指定されたパスに置かれているフォルダに対応する Folder オブジェクトを返します。 | object.GetFolder(folderspec) |
GetParentFolderName | 指定されたパスの最後のファイルまたはフォルダの親フォルダの名前が入った文字列を返します。 | object.GetParentFolderName(path) |
GetSpecialFolder | 指定された特殊フォルダを返します。 | object.GetSpecialFolder(folderspec) |
GetTempName | 一時ファイルまたは一時フォルダの名前をランダムに生成して返します。このメソッドは、一時ファイルや一時フォルダを必要とする処理を行うときに便利です。 | object.GetTempName ( ) |
MoveFile | ファイル (複数可) を別の場所へ移動します。 | object.MoveFile ( source, destination ) |
MoveFolder | フォルダ (複数可) を別の場所へ移動します。 | object.MoveFolder ( source, destination ) |
OpenTextFile | 指定したファイルを開き、開いたファイルの読み取り、または追加書き込みに使用できる TextStream オブジェクトを返します。 | object.OpenTextFile(filename[, iomode[, create[, format]]]) |
FileSystemObjectオブジェクトのメソッドの戻り値
Folderオブジェクト
Fileオブジェクト
TextStreamオブジェクト
Driveオブジェクト
プロパティ | 説明 |
AvailableSpace | 指定されたドライブまたはネットワーク共有でユーザーが使用できるディスク容量を返します。 |
DriveLetter | 物理ローカル ドライブまたはネットワーク共有のドライブ名を返します。値の取得のみ可能です。 |
DriveType | 指定されたドライブの種類を示す値を返します。 |
FileSystem | 指定されたドライブに使用されているファイル システムの種類を返します。 |
FreeSpace | 指定されたドライブまたはネットワーク共有でユーザーが使用できるディスクの空き境域を返します。値の取得のみ可能です。 |
IsReady | 指定されたドライブの準備ができている場合は真 (true) を返します。 準備ができてない場合は偽 (false) を返します。 |
Path | 指定されたファイル、フォルダ、またはドライブのパスを返します。 |
RootFolder | 指定されたドライブのルート フォルダを表す Folder オブジェクトを返します。 値の取得のみ可能です。 |
SerialNumber | ディスク ボリュームを一意に識別する小数のシリアル番号を返します。 |
ShareName | 指定されたドライブのネットワーク共有名を返します。 |
TotalSize | ドライブまたはネットワーク共有の総容量をバイト単位で返します。 |
VolumeName | 指定されたドライブのボリューム名を設定または返します。値の取得も可能です。 |
Folderオブジェクト
プロパティ | 説明 |
Attributes | ファイルまたはフォルダの属性を設定します。値の取得も可能です。属性によっては、値の取得のみ可能な場合もあります。 |
DateCreated | 指定されたファイルまたはフォルダの作成された日付と時刻を返します。値の取得のみ可能です。 |
DateLastAccessed | 指定されたファイルまたはフォルダが最後にアクセスされたときの日付と時刻を返します。 値の取得のみ可能です。 |
DateLastModified | 指定されたファイルまたはフォルダが最後に更新されたときの日付と時刻を返します。 値の取得のみ可能です。 |
Drive | 指定されたファイルまたはフォルダが格納されているドライブの名前を返します。 値の取得のみ可能です。 |
Files | 指定されたフォルダ内にあるすべての File オブジェクトの入った Files コレクションを返します。 このコレクションには、隠しファイルやシステム ファイルの属性を持つ File オブジェクトも含まれます。 |
IsRootFolder | 指定されたフォルダがルート フォルダの場合は、真 (true) を返します。 ルート フォルダでなければ、偽 (false) を返します。 |
Name | 指定されたファイルまたはフォルダの名前を設定します。値の取得も可能です。 |
ParentFolder | 指定されたファイルまたはフォルダが格納されているフォルダを表す Folder オブジェクトを返します。値の取得のみ可能です。 |
Path | 指定されたファイル、フォルダ、またはドライブのパスを返します。 |
ShortName | 従来の 8.3 形式のファイル名が必要なプログラムのために、短いファイル名を返します。 |
ShortPath | 従来の 8.3 形式のファイル名が必要なプログラムのために、短いパス名を返します。 |
Size | ファイルの場合、指定されたファイルのバイト単位のサイズを返します。フォルダの場合、指定されたフォルダ内のすべてのファイルおよびフォルダの合計サイズをバイト単位で返します。 |
SubFolders | 指定されたフォルダ内にあるすべてのフォルダの入った Folders コレクションを返します。 このコレクションには、隠しファイルやシステム ファイルの属性を持つフォルダも含まれます。 |
Type | ファイルまたはフォルダの種類に関する情報を返します。 たとえば、名前が .TXT の拡張子で終わるファイルの場合なら、"テキスト文書" という文字列が返されます。 |
メソッド | 説明 |
Copy | 指定したファイルまたはフォルダを別の場所にコピーします。 |
Delete | 指定されたファイルまたはフォルダを削除します。 |
Move | 指定されたファイルまたはフォルダを別の場所へ移動します。 |
OpenAsTextStream | 指定したファイルを開き、開いたファイルの読み取り、または追加書き込みに使用できる TextStream オブジェクトを返します。 |
Fileオブジェクト
プロパティ | 説明 |
Attributes | ファイルまたはフォルダの属性を設定します。値の取得も可能です。 属性によっては、値の取得のみ可能な場合もあります。 |
DateCreated | 指定されたファイルまたはフォルダの作成された日付と時刻を返します。 値の取得のみ可能です。 |
DateLastAccessed | 指定されたファイルまたはフォルダが最後にアクセスされたときの日付と時刻を返します。 値の取得のみ可能です。 |
DateLastModified | 指定されたファイルまたはフォルダが最後に更新されたときの日付と時刻を返します。 値の取得のみ可能です。 |
Drive | 指定されたファイルまたはフォルダが格納されているドライブの名前を返します。 値の取得のみ可能です。 |
Name | 指定されたファイルまたはフォルダの名前を設定します。値の取得も可能です。 |
ParentFolder | 指定されたファイルまたはフォルダが格納されているフォルダを表す Folder オブジェクトを返します。値の取得のみ可能です。 |
Path | 指定されたファイル、フォルダ、またはドライブのパスを返します。 |
ShortName | 従来の 8.3 形式のファイル名が必要なプログラムのために、短いファイル名を返します。 |
ShortPath | 従来の 8.3 形式のファイル名が必要なプログラムのために、短いパス名を返します。 |
Size | ファイルの場合、指定されたファイルのバイト単位のサイズを返します。 フォルダの場合、指定されたフォルダ内のすべてのファイルおよびフォルダの合計サイズをバイト単位で返します。 |
Type | ファイルまたはフォルダの種類に関する情報を返します。 たとえば、名前が .TXT の拡張子で終わるファイルの場合なら、"テキスト文書" という文字列が返されます。 |
メソッド | 説明 |
Copy | 指定したファイルまたはフォルダを別の場所にコピーします。 |
Delete | 指定されたファイルまたはフォルダを削除します。 |
Move | 指定されたファイルまたはフォルダを別の場所へ移動します。 |
OpenAsTextStream | 指定したファイルを開き、開いたファイルの読み取り、または追加書き込みに使用できる TextStream オブジェクトを返します。 |
TextStreamオブジェクト
プロパティ | 説明 |
AtEndOfLine | TextStream ファイル内でファイル ポインタが行末 (EOL) の直前に置かれている場合に真 (true) を返します。それ以外の場合は、偽 (false) を返します。値の取得のみ可能です。 |
AtEndOfStream | TextStream ファイル内でファイル ポインタがファイルの最後に置かれている場合に真 (true) を返します。それ以外の場合は、偽 (false) を返します。値の取得のみ可能です。 |
Column | TextStream ファイル内での現在の文字位置のカラム番号を返します。 値の取得のみ可能です。 |
Line | TextStream ファイル内での現在の行番号を返します。 値の取得のみ可能です。 |
メソッド | 説明 |
Close | 開いた状態の TextStream ファイルを閉じます。 |
Read | TextStream ファイルから指定された文字数を読み込み、その結果の文字列を返します。 |
ReadAll | TextStream ファイル全体を読み込み、その結果の文字列を返します。 |
ReadLine | TextStream ファイルから 1 行 (改行文字を除く) を読み込み、その結果の文字列を返します。 |
Skip | TextStream ファイルを読み込むときに指定された数の文字数をスキップします。 |
SkipLine | TextStream ファイルを読み込むときに次の行をスキップします。 |
Write | 指定した文字列を TextStream ファイルに書き込みます。 |
WriteBlankLines | 指定された数の改行文字を TextStream ファイルに書き込みます。 |
WriteLine | 指定した文字列と改行文字を TextStream ファイルに書き込みます。 |
FileSystemObjectオブジェクトの使用例
指定フォルダ直下のサブフォルダとファイルを一覧出力
Sub フォルダとファイル一覧取得()
Dim objFSO As FileSystemObject
Dim objFolder As Folder
Dim objFolderSub As Folder
Dim objFile As File
Dim strDir As String
Dim i As Long
strDir = "フォルダをフルパスで指定"
Set objFSO = New FileSystemObject
If Not objFSO.FolderExists(strDir) Then
MsgBox ("指定のフォルダは存在しません")
Exit Sub
End If
i = 2 'シートの2行目から出力
'サブフォルダ一覧
Set objFolder = objFSO.GetFolder(strDir)
For Each objFolderSub In objFolder.SubFolders
Cells(i, 2) = objFolderSub.Name
i = i + 1
Next
'ファイル一覧
For Each objFile In objFolder.Files
With objFile
Cells(i, 2) = .Name
Cells(i, 3) = .Size
Cells(i, 4) = .DateLastModified
i = i + 1
End With
Next
Set objFSO = Nothing
Set objFolder = Nothing
Set objFolderSub = Nothing
End Sub
テキストファイルの読み込みイミディエイトに出力
Sub テキストファイルの読み込み()
Dim objFSO As New FileSystemObject
Dim inTS As TextStream
Dim strFile As String
Dim strText As String
strFile = "C:\excel-ubara\xcopy_d.bat"
Set objFSO = New FileSystemObject
If Not objFSO.FileExists(strFile) Then
MsgBox ("指定のファイルは存在しません")
Exit Sub
End If
Set inTS = objFSO.OpenTextFile(strFile, ForReading)
strText = inTS.ReadAll
Debug.Print strText
End Sub
FileSystemObjectオブジェクトの関連記事と実践例
フォルダ(サブフォルダも全て)削除する、Optionでファイルのみ削除
Dir関数の使い方と合わせてファイル操作全般を学習するには、以下のシリーズが良いでしょう。
FileSystemObjectオブジェクトが出てくるのは、№6からになります。
エクセルでファイル一覧を作成
VBA100本ノックでもFileSystemObjectは多く使用しています。
同じテーマ「マクロVBA入門」の記事
第116回.ファイル操作Ⅱ(OpenとClose)
第117回.ファイル操作Ⅱ(Line Input #)
第118回.ファイル操作Ⅱ(Print #)
第119回.ファイルシステムオブジェクト(FileSystemObject)
第120回.OnTimeメソッド
第121回.SendKeysメソッドとAppActivateステートメント
第122回.Shell関数
第123回.APIについて(Win32API)
第124回.Workbookのイベントプロシージャー
第125回.Worksheetのイベントプロシージャー
第130回.テーブル操作の概要(ListObject)
新着記事NEW ・・・新着記事一覧を見る
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。