FileSystemObjectの参照下で使用できるようになる、
Folderオブジェクトの取得方法とプロパティ・メンバー一覧を記載します。
※ FileSystemObjectについての解説はこちらからどうぞ
Folderオブジェクトの取得方法
Folderオブジェクトを取得する方法は以下の2つです。
FolderSystemObject.GetFolderメソッド
Dim フォルダ As Folder Set フォルダ = FSO.GetFolder(対象フォルダのパス)
Folderオブジェクト.SubFoldersプロパティ(の各Item)
Dim 親フォルダ As Folder Set 親フォルダ = FSO.GetFolder(対象フォルダのパス) Dim 子フォルダ As Folder For Each 子フォルダ In 親フォルダ.SubFolders Next
Foldersコレクションから各フォルダを取得するのはほぼForEach文で行うと思いますが、フォルダ名を指定すればItemプロパティでも取得が可能です。
Dim 親フォルダ As Folder Set 親フォルダ = FSO.GetFolder(対象フォルダのパス) Dim 子フォルダ As Folder Set 子フォルダ = 親フォルダ.SubFolders.Item(フォルダ名) ' または Set フォルダ = 親フォルダ.SubFolders(フォルダ名) ' Itemは省略可
ただし、指定できるのはKey = フォルダ名だけであり、
WorksheetsのようにIndexで指定することはできません。
Set フォルダ = 親フォルダ.Folders(1) ' ⇐ これはエラー
Folderオブジェクトのメンバー一覧
メソッド一覧
メソッド | 処理内容 |
---|---|
Copy | フォルダをコピー |
Delete | フォルダを削除 |
Move | フォルダを移動 |
CreateTextFile | テキストファイルを作成してそのTextStreamを取得 |
Copy/Delete/Moveはすべて中身のファイル・フォルダごと実行されます。
Copy(フォルダをコピー)
フォルダ.Copy 行先のパス, [上書きするか_省略時はTrue=する]
行先のパスは
- 「~~\」ならそのフォルダの中に同名でコピー
- 「~~\フォルダ名」ならコピーして別名にリネーム
Delete(フォルダを削除)
フォルダ.Delete [読取専用フォルダも消すか(省略時はFalse=しない)]
Move(フォルダを移動)
フォルダ.Move 行先のパス
行先のパスは
- 「~~\」ならそのフォルダの中に同名でコピー
- 「~~\フォルダ名」なら移動して別名にリネーム
・同名フォルダの上書きは不可(エラー)
・別のドライブへの移動は不可(エラー)
CreateTextFile(テキストファイルを作成してそのTextStreamを取得)
Dim 編集するテキスト As TextStream Set 編集するテキスト = フォルダ.CreateTextFile(作成ファイル名, [上書きするか_省略時はTrue], [True:Unicode/False:ASCII_省略時はFalse])
プロパティ一覧
プロパティ | 取得 | 設定 | 型 |
---|---|---|---|
Files | 中身のファイルコレクション | Files | |
SubFolders | 中身のフォルダコレクション | Folders | |
ParentFolder | 親フォルダオブジェクト | Folder | |
Drive | 親ドライブオブジェクト | Drive | |
Attributes | フォルダの属性 | ○ | Long ※1 |
DateCreated | 作成日時 | Date | |
DateLastAccessed | アクセス日時 | Date | |
DateLastModified | 更新日時 | Date | |
IsRootFolder | 最上位フォルダか判定 | Boolean | |
Name | フォルダ名 | ○ | String |
Path | [規定]フォルダパス | String | |
Size | サイズ | Long ※2 | |
Type | 種類 ※3 | String | |
ShortName | 8.3形式名(古い) | String | |
ShortPath | 8.3形式パス(古い) | String |
※1 : 正確には列挙型vbFileAttribute。(Dir関数の引数に渡すのと同じもの)
※2 : バイト数を整数値で返す。型はVariantだが事実上Long。
※3 :「ファイル フォルダー」しか返りません。
すべて引数はありませんので、
Dim 作成日時 As Date 作成日時 = フォルダ.DateCreated
このようなコードで各値を取得してください。
既定のプロパティはPathですので、
Dim フォルダパス As String フォルダパス = フォルダ
でパスを取得できますが、見てわかる通りかなり紛らわしいです。
よってプロパティ名の省略はおすすめしません。
設定も行えるのは「名称」と「属性」の2つです。
' フォルダ名の変更 フォルダ.Name = 変更するフォルダ名 ' フォルダを隠しフォルダにする フォルダ.Attributes = Directory + Hidden
以上がFolderオブジェクトの取得方法とプロパティ・メンバー一覧です。
その他FileSystemObjectの解説ついてはこちらを参照ください。
www.limecode.jp