■ エクセルからファイルを操作しよう2
前回に続き、FileSystemObjectファイルシステムオブジェクトについて解説します。
■Drive オブジェクト
共有名や空き容量など、システムに接続されたドライブについての情報を収集するためのメソッドとプロパティが用意されています。ハードディスクだけでなく、CDドライブやUSBメモリも対象になります。またドライブはシステムに物理的に接続されている必要はなく、ネットワーク経由で接続されている場合も対象になります。
Drives コレクション。
システムに物理的または論理的に接続されたドライブの一覧を取得します。リムーバブルドライブは、ドライブにメディアがセットされていなくてもコレクションに追加されます。
「Drive オブジェクトのプロパティの一覧 」
・AvailableSpace 使用できるディスク容量を返します。
・FreeSpace 使用できるディスク容量を返します。
・TotalSize ドライブの総容量をバイト単位で返します。
(例)
Debug.Print FSO.GetDrive("C").AvailableSpace
Debug.Print FSO.GetDrive("C").FreeSpace
両者ともCドライブの使用可能なディスク容量を返します。OSがディスククォータ機能をサポートしている場合、両者の値が異なる可能性があります。 |
(例)
Debug.Print FSO.GetDrive("C").TotalSize
・DriveLetter ドライブ名を返します。
・Path ドライブのパスを返します。
・RootFolder ドライブのルートフォルダを表すFolderオブジェクトを返します。
(例)
Debug.Print FSO.GetDrive("C").DriveLetter
Debug.Print FSO.GetDrive("C").Path
Debug.Print FSO.GetDrive("C").RootFolder
上から、"C"、"C:"、"C:\"、を返します。
ただし、RootFolderプロパティで取得するのはFolderオブジェクトです。 |
・DriveType ドライブの種類を示す値を返します。
(例)
Debug.Print FSO.GetDrive("C").DriveType
ドライブタイプとして次のいずれかの値が返ります。
0 不明、1 リムーバブルディスク、2 ハードディスク、3 ネットワークドライブ、
4 CD-ROMドライブ、5 RAMディスク |
・FileSystem ドライブが使用しているファイルシステムの種類を返します。
(例)
Debug.Print FSO.GetDrive("C").FileSystem
ドライブが使用しているファイルシステムの種類として、次のいずれかの文字列を返します。
"FAT"、"NTFS"、"CDFS" |
・SerialNumber ディスクボリュームのシリアル番号を返します。
・ShareName ドライブのネットワーク共有名を返します。
・VolumeName ドライブのボリューム名を設定または返します。
(例)
Debug.Print FSO.GetDrive("C").SerialNumber
Debug.Print FSO.GetDrive("C").ShareName
Debug.Print FSO.GetDrive("C").VolumeName
ドライブの各情報を取得します。VolumeNameは値の取得だけでなく、設定をすることも可能です。 |
・IsReady ドライブの準備ができている場合は真を、できてない場合は偽を返します。
(例)
Debug.Print FSO.GetDrive("C").IsReady
ドライブの準備ができていれば真を、まだなら偽を返します。リムーバブルディスクにメディアがセットされているかどうかの判定に使えます。 |
「Drive オブジェクトには、メソッドはありません 」
■File オブジェクト
ファイルの作成、削除、または移動に使用するメソッドとプロパティが用意されています。ファイル名、パス、およびその他のプロパティをシステムから取得することができます。
Files コレクション。
フォルダに格納されたすべてのファイルの一覧を取得します。
「File オブジェクトのプロパティの一覧 」
・Attributes
ファイルの属性を設定します。
(例)
If FSO.GetFile("C:\test\test.txt").Attributes And 1 Then
Debug.Print "読み取り専用です"
Else
Debug.Print "読み取り専用ではありません"
End If
C:\test\test.txtが読み取り専用の属性があるかを調べています。判定には属性値との論理和を用います。以下の属性値が使用できます。
0 標準、1 読み取り専用、2 隠しファイル、4 システムファイル、
8 ディスクドライブボリュームラベル、16 フォルダまたはディレクトリ、
32 アーカイブ(変更の有無)、64 リンクまたはショートカット、128 圧縮
なお、8、16、64、128は取得のみ可能で設定はできません。 |
・DateCreated
ファイルの作成された日付と時刻を返します。
・DateLastAccessed
ファイルが最後にアクセスされたときの日付と時刻を返します。
・DateLastModified
ファイルが最後に更新されたときの日付と時刻を返します。
(例)
Debug.Print FSO.GetFile("C:\test\test.txt").DateCreated
Debug.Print FSO.GetFile("C:\test\test.txt").DateLastAccessed
Debug.Print FSO.GetFile("C:\test\test.txt").DateLastModified
いずれも返り値はすべて文字列です。文字列は"yyyy/mm/dd
h:nn:ss"の形式になります。 |
・Drive
ファイルが格納されているドライブの名前を返します。
・Name
ファイルの名前を設定または返します。
・ParentFolder
ファイルが格納されている親フォルダのFolderオブジェクトを返します。
・Path ファイル、フォルダ、またはドライブのパスを返します。
(例)
Debug.Print FSO.GetFile("C:\test\test.txt").Drive
Debug.Print FSO.GetFile("C:\test\test.txt").Name
Debug.Print FSO.GetFile("C:\test\test.txt").ParentFolder
Debug.Print FSO.GetFile("C:\test\test.txt").Path
上から"C:"、"test"、"C:\"、"C:\test"、を返します。
ただし、ParentFolderプロパティで取得するのはFolderオブジェクトです |
・ShortName 8.3 形式の短いファイル名を返します。
・ShortPath 8.3 形式の短いパス名を返します。
(例)
Debug.Print FSO.GetFile("C:\test\test.txt").ShortName
Debug.Print FSO.GetFile("C:\test\test.txt").ShortPath
8.3形式のフォルダ名、パスを返します。8.3形式では空白が使用できず、ベース名の最大は半角8文字、拡張子の最大は半角3文字です。 |
・Size
ファイルの場合はバイト単位のサイズを返します。
・Type
ファイルの種類を返します。拡張子がbmpのファイルならば「ビットマップイメージ」の文字列を返します。
(例)
Debug.Print FSO.GetFile("C:\test\test.txt").Size
Debug.Print FSO.GetFile("C:\test\test.txt").Type
上の例では、C:\test\test.txtのサイズを、下の例では"テキスト ドキュメント"の文字列を返します。 |
「File オブジェクトのメソッドの一覧 」
・Copy
ファイルをコピーします。
(例)
FSO.GetFile("C:\test\test.txt").Copy "C:\test2\"
FileSystemObjectオブジェクトのCopyFileメソッドと同じ働きをします。
この例では、C:\test内にある\test.txtをC:\test2にコピーします。 |
・Delete
ファイルを削除します。
(例)
FSO.GetFile("C:\test\test.txt").Delete
FileSystemObjectオブジェクトのDeleteFileメソッドと同じ働きをします。
この例では、C:\test内にあるtest.txtを削除します。 |
・GetAbsolutePathName 指定されたパスの完全なパス名を返します。
(例)
Debug.Print FSO.GetAbsolutePathName("test.txt")
Debug.Print FSO.GetAbsolutePathName("\")
カレントフォルダが"C:\test"だった場合、上の例では"C:\test\test.txt"を、下の例では"C:\"を返します。 |
・Move
ファイルを移動します。
(例)
FSO.GetFile("C:\test\test.txt").Move "C:\test2\"
FileSystemObjectオブジェクトのMoveFileメソッドと同じ働きをします。
この例では、C:\test内にあるtest.txtをC:\test2に移動します。 |
・CreateTextFile テキストファイルを作成し読み取りまたは書き込みに使用するTextStream オブジェクトを返します。
(例)
FileSystemObjectオブジェクトのCreateTextFileメソッドと同じ働きをします。 |
■Folder オブジェクト
フォルダの作成、削除、または移動に使用するためのメソッドとプロパティが用意されています。フォルダ名、パス、およびその他のプロパティをシステムから取得することができます。
Folders コレクション。
Folder オブジェクトに格納されたすべてのフォルダ一覧を取得します。
「Folder オブジェクトのプロパティの一覧 」
・Attributes
フォルダの属性を取得、設定します。
(例)
If FSO.GetFolder("C:\test").Attributes And 2 Then
Debug.Print "隠しフォルダです"
Else
Debug.Print "隠しフォルダではありません"
End If
C:\testに隠しフォルダの属性があるかを調べています。判定には属性値との論理和を用います。以下の属性値が使用できます。
0 標準、1 読み取り専用、2 隠しフォルダ、4 システムフォルダ、
8 ディスクドライブボリュームラベル、16 フォルダまたはディレクトリ、
32 アーカイブ(変更の有無)、64 リンクまたはショートカット、128 圧縮
なお、8、16、64、128は取得のみ可能で設定はできません。 |
・DateCreated
フォルダの作成された日付と時刻を返します。
・DateLastAccessed
フォルダが最後にアクセスされたときの日付と時刻を返します。
・DateLastModified
フォルダが最後に更新されたときの日付と時刻を返します
(例)
Debug.Print FSO.GetFolder("C:\test").DateCreated
Debug.Print FSO.GetFolder("C:\test").DateLastAccessed
Debug.Print FSO.GetFolder("C:\test").DateLastModified
いずれも返り値はすべて文字列です。文字列は"yyyy/mm/dd
h:nn:ss"の形式になります。 |
・Drive
フォルダが格納されているドライブの名前を返します。
・Name
フォルダの名前を設定または取得します。
・ParentFolder
フォルダが格納されている親フォルダのFolderオブジェクトを返します。
・Path ファイル、フォルダ、ドライブのパスを返します。
(例)
Debug.Print FSO.GetFolder("C:\test").Drive
Debug.Print FSO.GetFolder("C:\test").Name
Debug.Print FSO.GetFolder("C:\test").ParentFolder
Debug.Print FSO.GetFolder("C:\test").Path
上から"C:"、"test"、"C:\"、"C:\test"、を返します。
ただし、ParentFolderプロパティで取得するのはFolderオブジェクトです。 |
・ShortName 8.3 形式の短いファイル名を返します。
・ShortPath 8.3 形式の短いパス名を返します。
(例)
Debug.Print FSO.GetFolder("C:\test").ShortName
Debug.Print FSO.GetFolder("C:\test").ShortPath
8.3形式のフォルダ名、パスを返します。8.3形式では空白が使用できず、ベース名の最大は半角8文字、拡張子の最大は半角3文字です。 |
・Files フォルダ内にあるすべてのFilesコレクションを返します。隠しファイルやシステムファイルも含まれます。
・SubFolders フォルダ内にあるすべてのサブフォルダのFoldersコレクションを返します。隠しファイルやシステムファイル属性のフォルダも含まれます。
(例)
Debug.Print FSO.GetFolder("C:\test").Files.Count
Debug.Print FSO.GetFolder("C:\test").SubFolders.Count
両者ともコレクションを返します。この例では取得したコレクションのCountプロパティでファイル数、サブフォルダ数を取得しています。 |
・IsRootFolder フォルダがルートフォルダの場合は真を、ルートフォルダでない場合は偽を返します。
(例)
Debug.Print FSO.GetFolder("C:\test").IsRootFolder
C:\testはルートフォルダではないので、この場合Falseが返ります。 |
・Size
フォルダの場合はフォルダ内すべての合計サイズを返します。
・Type
フォルダの種類を返します。
(例)
Debug.Print FSO.GetFolder("C:\test").Size
Debug.Print FSO.GetFolder("C:\test").Type
上の例では、C:\testの合計容量を、下の例では"ファイル フォルダ"の文字列を返します。 |
「Folder オブジェクトのメソッドの一覧 」
・Copy
フォルダをコピーします。
(例)
FSO.GetFolder("C:\test").Copy "C:\test2"
FileSystemObjectオブジェクトのCopyFolderメソッドと同じ働きをします。
この例では、C:\test内にあるすべてのサブフォルダ、ファイルをC:\test2にコピーします。 |
・Delete
フォルダを削除します。
(例)
FSO.GetFolder("C:\test").Delete
FileSystemObjectオブジェクトのDeleteFolderメソッドと同じ働きをします。
この例では、C:\testとフォルダ内にのすべてのサブフォルダ、ファイルを削除します。 |
・Move
フォルダを移動します。
(例)
FSO.GetFolder("C:\test").Move "C:\test2\"
FileSystemObjectオブジェクトのMoveFolderメソッドと同じ働きをします。
この例では、C:\testをC:\test2のサブフォルダとして移動します。 |
・CreateTextFile テキストファイルを作成し読み取りまたは書き込みに使用するTextStream オブジェクトを返します。
(例)
FileSystemObjectオブジェクトのCreateTextFileメソッドと同じ働きをします。 |
次回はいよいよ、TextStreamオブジェクトとGetOpenFilenameメソッドについて解説します。
|