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

スポンサーリンク

ファイルの操作や取得をするFSOのメソッド一覧

メソッド内容
GetFile
【ゲットファイル】
ファイルをFSOの「Fileオブジェクト」として取得します。
FileExists
【ファイルイグズィストゥ】
FSOでファイルの存在を確認します。
DeleteFile
【デリートファイル】
FSOでファイルを削除します。
CopyFile
【コピーファイル】
FSOでファイルをコピーします。
MoveFile
【ムーブファイル】
FSOでファイルを移動します。
GetBaseName
【ゲットベースネーム】
ファイル名の拡張子を除いたファイル名を取得します。
GetExtensionName
【ゲットエクステンションネーム】
ファイル名のファイル名を除いた拡張子を取得します。

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

ファイルをFileSystemObject【ファイルシステムオブジェクト】(以下FSO)の「Fileオブジェクト」として取得するには、FSOオブジェクトのGetfile【ゲットファイル】メソッドを使用します。File【ファイル】オブジェクトのプロパティを使用して、ファイルのさまざまな情報を取得したり、メソッドを使用してファイルの操作をすることができます。

GetFile【ゲットファイル】メソッドの書式と設定値(引数)の説明

オブジェクト.GetFile(FilePath)

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

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

FSOでファイルの存在を確認するには、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で指定したファイル名の拡張子を除いたファイル名を取得するには、FSOオブジェクトのGetBaseName【ゲットベースネーム】メソッドを使用します。

FSOで指定したファイル名のファイル名を除いた拡張子を取得するには、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 ファイル】
ファイル名のFile【ファイル】オブジェクトが格納されている変数「ファイル」をWith【ウィズ】ステートメント指定します。


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

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

スポンサーリンク

関連記事・広告