VBA ファイルの操作や取得をするFSOのメソッドやプロパティ

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

GetFile【ゲットファイル】メソッド

FileSystemObject【ファイルシステムオブジェクト】(以下FSO)の
Getfile【ゲットファイル】メソッドを使用すると
ファイルをFSOの
「Fileオブジェクト」として取得できます。

Fileオブジェクトのプロパティを使用して
ファイルのさまざまな情報を取得したり
メソッドを使用してファイルの操作をすることができます。

GetFile【ゲットファイル】メソッドの書式

オブジェクト.GetFile(FilePath)


設定項目の説明

  • オブジェクト(必須)
    FSOを指定します。
    「Microsoft Scripting Runtime」への参照設定が行われている必要があります。
  • FilePath【ファイルパズ】(必須)
    Fileオブジェクトとして取得したいファイル名を指定します。
    パスも含めて指定できます。
    ファイル名のみ指定した場合はカレントフォルダーの
    ファイルが対象になります。
    ※指定したファイルが存在しない場合はエラーになります。

FileExists【ファイルイグズィストゥ】メソッド

FSOでファイルの存在を確認するには
FileExists【ファイルイグズィストゥ】メソッドを使用します。
指定されたファイルが存在する場合は 「True」
指定されたファイルが存在しない場合は「False」
を返します。

FileExists【ファイルイグズィストゥ】メソッドの書式

オブジェクト.FileExists(FileSpec)
【戻り値】ブール型(Boolean)


設定値(引数)の説明

  • オブジェクト(必須)
    FSOを指定します。
    「Microsoft Scripting Runtime」への参照設定が行われている必要があります。
  • FileSpec【ファイルスペック】(必須)
    存在を確認したいファイル名を指定します。
    拡張子も含めて指定します。
    パスも含めて指定できます。ファイル名のみ指定した場合は
    カレントフォルダーのファイルが対象になります。

DeleteFile【デリートファイル】メソッド

FSOでファイルを削除するには
FSOオブジェクトの
DeleteFile【デリートファイル】メソッドを使用します。

DeleteFile【デリートファイル】メソッドの書式

[]内は省略可能です。
オブジェクト.DeleteFile ( Filespec[, Force] )


設定値(引数)の説明

  • オブジェクト(必須)
    FSOを指定します。
    「Microsoft Scripting Runtime」への参照設定が行われている必要があります。
  • Filespec【ファイルスペック】(必須)
    削除をしたいファイル名を指定します。
    拡張子も含めて指定します。
    パスも含めて指定できます。ファイル名のみ指定した場合は
    カレントフォルダーのファイルが対象になります。
    ※指定したファイルが存在しない場合はエラーになります。
  • Force【フォース】(省略可)
    「True」を指定すると「読み取り専用ファイル」も削除できます。
    既定値は「False」で「読み取り専用ファイル」は削除されません。

InputBoxに入力されたこのブックと同じ場所にあるファイルを削除するコード例

Sub ファイル削除()
Dim FSO As New FileSystemObject
Dim ファイル名 As String
ファイル名 = InputBox("削除したいファイル名を拡張子付きで指定してください。")
If FSO.FileExists(ThisWorkbook.Path & "¥" & ファイル名) Then
FSO.DeleteFile (ThisWorkbook.Path & "¥" & ファイル名)
Else
MsgBox "ファイルは存在しません。"
Exit Sub
End If
MsgBox ファイル名 & "ファイルを削除しました。"
End Sub

CopyFile【コピーファイル】メソッド

FSOでファイルをコピーするには
FSOオブジェクトの
CopyFile【コピーファイル】メソッドを使用します。

CopyFile【コピーファイル】メソッドの書式

[]内は省略可能です。
オブジェクト.CopyFile( Source, Destination[, Overwrite] )


設定項目(引数)の説明

  • オブジェクト(必須)
    FSOを指定します。
    「Microsoft Scripting Runtime」への参照設定が行われている必要があります。
  • Source【ソース】(必須)
    コピーをしたいファイル名を指定します。
    拡張子も含めて指定します。
    パスも含めて指定できます。ファイル名のみ指定した場合は
    カレントフォルダーのファイルが対象になります。
    ※指定したファイルが存在しない場合はエラーになります。
  • Destination【デスティネーション】(必須)
    コピー先を表す文字列とファイル名を指定します
    指定したコピー先が「読み取り専用属性」の場合はエラーになります。
  • Overwrite【オーバーライト】(省略可)
    コピーしたファイルを上書きするかどうかを示すブール値を指定します。
    省略または「True 」を指定すると
    既存フォルダ内のファイルは上書きされます。
    「False」 を指定すると上書きされません。

InputBoxで指定されたファイルをバックアップフォルダーにコピーするコード例

Sub ファイルコピー()
Dim FSO As New FileSystemObject
Dim ファイル名 As String
ファイル名 = InputBox("バックアップしたいファイル名を拡張子付きで指定してください。")
If FSO.FileExists(ThisWorkbook.Path & "¥" & ファイル名) Then
FSO.CopyFile Source:=ThisWorkbook.Path & "¥" & ファイル名, _
Destination:=ThisWorkbook.Path & "¥バックアップ¥" & ファイル名
Else
MsgBox "ファイルは存在しません。"
Exit Sub
End If
MsgBox ファイル名 & "ファイルをコピーしました。"
End Sub

※このブックと同じ場所に「バックアップ」ファルダーがあることが前提です。


MoveFile【ムーブファイル】メソッド

FSOでファイルを移動するには
FSOオブジェクトの
MoveFile【ムーブファイル】メソッドを使用します。

MoveFile【ムーブファイル】メソッドの書式

[]内は省略可能です。
オブジェクト.MoveFile( Source, Destination )


設定項目(引数)の説明

  • オブジェクト(必須)
    FSOを指定します。
    「Microsoft Scripting Runtime」への参照設定が行われている必要があります。
  • Source【ソース】(必須)
    移動をしたいファイル名を指定します。
    拡張子も含めて指定します。
    パスも含めて指定できます。ファイル名のみ指定した場合は
    カレントフォルダーのファイルが対象になります。
    ※指定したファイルが存在しない場合はエラーになります。
  • Destination【デスティネーション】(必須)
    移動先を表す文字列とファイル名を指定します
    指定した移動先が「読み取り専用属性」の場合はエラーになります。
    指定した移動先に同じファイル名のファイルが存在する場合はエラーになります。

InputBoxで指定されたファイルを「処理済みフォルダー」に移動するコード例

Sub ファイル移動()
Dim FSO As New FileSystemObject
Dim ファイル名 As String
ファイル名 = InputBox("処理済みにしたいファイル名を拡張子付きで指定してください。")
If FSO.FileExists(ThisWorkbook.Path & "¥" & ファイル名) Then
FSO.MoveFile Source:=ThisWorkbook.Path & "¥" & ファイル名, _
Destination:=ThisWorkbook.Path & "¥処理済み¥" & ファイル名
Else
MsgBox "ファイルは存在しません。"
Exit Sub
End If
MsgBox ファイル名 & "ファイルを移動しました。"
End Sub

※このブックの場所に「処理済みフォルダー」があることが前提です。


GetBaseName【ゲットベースネーム】メソッド

GetExtensionName【ゲットエクステンションネーム】メソッド

FSOで指定したファイル名の
拡張子を除いたファイル名を取得するには
GetBaseName【ゲットベースネーム】メソッドを使用します。
FSOで指定したファイル名の
ファイル名を除いた拡張子を取得するには
GetExtensionName【ゲットエクステンションネーム】メソッドを使用します。

GetBaseName・GetExtensionNameメソッドの書式

オブジェクト.GetBaseName(Path)
オブジェクト.GetExtensionName(Path)


設定値(引数)の説明

  • オブジェクト(必須)
    FSOを指定します。
    「Microsoft Scripting Runtime」への参照設定が行われている必要があります。
  • Path【パス】(必須)
    ファイル名を指定します。

InputBoxに入力されたファイル名をファイル名と拡張子に分けて表示するコート例

Sub ファイル名分割()
Dim FSO As New FileSystemObject
Dim ファイル名 As String
Dim 拡張子 As String
ファイル名 = InputBox("ファイル名を拡張子付きで入力してください。")
拡張子 = FSO.GetExtensionName(ファイル名)
ファイル名 = FSO.GetBaseName(ファイル名)
MsgBox "ファイル名は" & ファイル名 & "です。" & vbCrLf & _
"拡張子は" & 拡張子 & "です。"
End Sub

Fileオブジェクトの主なプロパティ一覧

  • Attributes【アトリビューツ】プロパティ
    ファイルの属性を取得または、設定します。
    戻り値はvbFileAttribute列挙型の定数の値で返ります。
vbFileAttribute列挙型の定数
定数属性の種類
vbNormal通常ファイル0
vbReadOnly読み取り専用1
vbHidden隠しファイル2
vbSystemシステムファイル4
vbDirectoryフォルダー16
vbArchiveアーカイブ属性32
  • DateCreated【デイトクリエーテッド】プロパティ
    ファイルの作成日時を取得します。
  • DateLastAccessed【デイトラストアクセッドゥ】プロパティ
    最後にアクセスされた日時を取得します。
  • DateLastModified【デイトラストモーディファイド】プロパティ
    最後に更新された日時を取得します。
  • Drive【ドライブ】プロパティ
    指定したファイルが保存されているドライブを取得します。
  • Name【ネーム】プロパティ
    ファイル名を取得または、設定します。
  • ParentFolder【パレントフォルダー】プロパティ
    指定したファイルが保存されているフォルダーを取得します。
  • Path【パス】プロパティ
    ファイルのパスを取得します。
  • Size【サイズ】プロパティ
    ファイルの容量をバイト単位で取得します。
  • Type【タイプ】プロパティ
    ファイルの種類を表す文字列を取得します。

InputBoxで指定されたファイルの各プロパティを取得するコード例

Sub ファイルプロパティ()
Dim FSO As New FileSystemObject
Dim ファイル名 As String
Dim ファイル As Object
ファイル名 = InputBox("ファイル名を拡張子付きで入力してください。")
If FSO.FileExists(ファイル名) Then
 Set ファイル = FSO.GetFile(ファイル名)
Else
MsgBox "ファイルは存在しません。"
Exit Sub
End If
With ファイル
MsgBox "ファイルの属性は" & .Attributes & "です。" & vbCrLf & _
       "ファイルの作成日時は" & .DateCreated & "です。" & vbCrLf & _
       "最後にアクセスした日時は" & .DateLastAccessed & "です。" & vbCrLf & _
       "最後に更新した日時は" & .DateLastModified & "です。" & vbCrLf & _
       "ドライブは" & .Drive & "です。" & vbCrLf & _
       "ファイルの名は" & .Name & "です。" & vbCrLf & _
       "フォルダー名は" & .ParentFolder & "です。" & vbCrLf & _
       "ファイルのパスは" & .Path & "です。" & vbCrLf & _
       "ファイルのサイズは" & .Size & "バイトです。" & vbCrLf & _
       "ファイルの種類は" & .Type & "です。"
End With
End Sub

コードの解説

2行目
【Dim FSO As New FileSystemObject】
NewキーワードでFileSystemObjectのインスタンス(複製)を作成して
変数FSOで宣言します。
「Microsoft Scripting Runtime」への参照設定が行われている必要があります。


3行目
【Dim ファイル名 As String】
ユーザーがInputBoxに入力したプロパティを取得するファイル名を
格納する変数ファイル名を文字列型(String)で宣言します。


4行目
【Dim ファイル As Object】
GetFile【ゲットファイル】メソッドで取得したFileオブジェクトを
格納する変数ファイルをオブジェクト型(Object)で宣言します。


5行目
【ファイル名 = InputBox(“ファイル名を拡張子付きで入力してください。”)】
InputBox関数を使用してユーザーが指定した
ファイル名を変数ファイル名に代入します。


6行目
【If FSO.FileExists(ファイル名) Then】
If文(条件分岐)でFileExistsメソッドを使用して変数ファイル名に
格納されているファイルの存在を確認して
ファイルが存在していたときを定義します。


7行目
【 Set ファイル = FSO.GetFile(ファイル名)】
オブジェクト型変数ファイルにSetステートメントを使用して
ファイルが存在していた場合にGetFileメソッドで変数ファイル名の
Fileオブジェクトを作成して変数ファイルに代入します。


9行目~10行目
【MsgBox “ファイルは存在しません。”
Exit Sub】

6行目の条件分岐で成立しなかったとき(値がFalse)
すなわち、ファイルが存在しない場合
メッセージを表示してマクロを中止します。


12行目
【With ファイル】
Withステートメントでファイル名のFileオブジェクトが
格納されている変数ファイルを指定します。


13行目以降
MsgBox関数を使用して
Fileオブジェクトの各プロパティで値を表示しています。


以上で
ファイルの操作や取得をするFSOのメソッドやプロパティに
ついての解説を終了します。
ありがとうございました。

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

フォローする

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