ファイルシステムオブジェクトによるファイル操作(1)

このページでは下表のメソッドについて説明します。これらはすべて FileSystemObject のメソッドになります。

内容 メソッド
ファイルオブジェクト取得 fso.GetFile
ファイル存在チェック fso.FileExists
ファイルベース名取得 fso.GetBaseName
ファイル拡張子取得 fso.GetExtensionName
ファイル名取得 fso.GetFileName
親フォルダ取得 fso.GetParentFolderName
ドライブ名取得 fso.GetDriveName
スポンサーリンク

使用方法

構文
fso.GetFile(Path)
fso.FileExists(Path)
fso.GetBaseName(Path)
fso.GetExtensionName(Path)
fso.GetFileName(Path)
fso.GetParentFolderName(Path)
fso.GetDriveName(Path)
引数名 省略 説明
Path × ファイルパスを指定します。 ファイルパスは絶対パス、相対パス、ネットワークパスのいずれも指定可能です。 相対パスを指定した場合はカレントフォルダ(⇒CurDir関数)が基準となります。

各メソッドの説明

fso.GetFile

引数で指定したファイルパスのファイルオブジェクトを返します。ファイルパスは事前に次の fso.FileExists でチェックしておくとよいでしょう。

Dim fso     As Object
Dim fileObj As Object

Set fso = CreateObject("Scripting.FileSystemObject")
'ファイルオブジェクト取得
Set fileobj = fso.GetFile("C:¥Users¥xxx¥Desktop¥test.txt")

'ファイルオブジェクトに対する処理を実施

'オブジェクト変数クリア
Set fso = Nothing
Set fileObj = Nothing

  Setステートメント

fso.FileExists

引数で指定したファイルパスの存在チェックを行い、結果を True または False で返します。

Dim fso     As Object

Set fso = CreateObject("Scripting.FileSystemObject")
if Not fso.FileExists("C:¥Users¥xxx¥Desktop¥test.txt") then
    MsgBox "ファイルが存在しません。処理を中止します。"
    End
End If

'オブジェクト変数クリア
Set fso = Nothing

  Setステートメント

fso.GetBaseName

引数で指定したファイルパスのベースネームを返します。ベースネームとはファイル名の拡張子を除いた部分のことです。

Dim fso     As Object

Set fso = CreateObject("Scripting.FileSystemObject")
Debug.Print fso.GetBaseName("C:¥Users¥xxx¥Desktop¥test.txt")

'オブジェクト変数クリア
Set fso = Nothing

  Setステートメント

fso.GetExtensionName

引数で指定したファイルパスの拡張子を返します。

Dim fso     As Object

Set fso = CreateObject("Scripting.FileSystemObject")
Debug.Print fso.GetExtensionName("C:¥Users¥xxx¥Desktop¥test.txt")

'オブジェクト変数クリア
Set fso = Nothing

  Setステートメント

fso.GetFileName

引数で指定したファイルパスのファイル名を返します。

Dim fso     As Object

Set fso = CreateObject("Scripting.FileSystemObject")
Debug.Print fso.GetFileName("C:¥Users¥xxx¥Desktop¥test.txt")

'オブジェクト変数クリア
Set fso = Nothing

  Setステートメント

fso.GetParentFolderName

引数で指定したファイルパスの親フォルダを返します。

Dim fso     As Object

Set fso = CreateObject("Scripting.FileSystemObject")
Debug.Print fso.GetParentFolderName("C:¥Users¥xxx¥Desktop¥test.txt")

'オブジェクト変数クリア
Set fso = Nothing

  Setステートメント

fso.GetDriveName

引数で指定したファイルパスのドライブ名を返します。ネットワーク上のパスを指定した場合は、ネットワーク共有名( ¥¥[サーバー名]¥[共有フォルダ名] )を返却します。

Dim fso     As Object

Set fso = CreateObject("Scripting.FileSystemObject")
Debug.Print fso.GetDriveName("C:¥Users¥xxx¥Desktop¥test.txt")

'オブジェクト変数クリア
Set fso = Nothing

  Setステートメント

上記で解説した fso.GetBaseName ~ fso.GetDriveName については単純に特定文字列の抽出を行っているにすぎず、存在しないパスでも正常に処理されてしまいます。

ファイルのパス情報を表示する例

ローカルPC上のファイルと、ネットワーク上のファイルのパス情報を出力する例です。ファイルが存在していればパス情報をイミディエイトウィンドウへすべて表示します。また、CreateObject 関数の戻り値を直接 Withステートメント に指定することで、オブジェクト変数(fso)の宣言と Set ステートメントによる格納の手間を省いています。

Sub sample_fs021_01()
    Dim myPath  As String

    myPath = "C:¥Users¥Public¥vba¥test.txt"
    Call printFilePathInfo(myPath)

    'ネットワーク上のパスを指定
    myPath = "¥¥SHARE-PC¥share¥vba¥test.xlsx"
    Call printFilePathInfo(myPath)

End Sub

Private Sub printFilePathInfo(strPath As String)
    Debug.Print ""  '空白行
    Debug.Print "Path     ->" & strPath

    With CreateObject("Scripting.FileSystemObject")
        Debug.Print "Exists   ->" & .FileExists(strPath)

        If .FileExists(strPath) Then
            Debug.Print "BaseName ->" & .GetBaseName(strPath)
            Debug.Print "ExtName  ->" & .GetExtensionName(strPath)
            Debug.Print "FileName ->" & .GetFileName(strPath)
            Debug.Print "PFolder  ->" & .GetParentFolderName(strPath)
            Debug.Print "DriveName->" & .GetDriveName(strPath)
        End If
    End With
End Sub

 プロシージャの記述  プロシージャの呼び出し Withステートメント

  • マクロ実行結果(イミディエイトウィンドウ
     
    Path     ->C:¥Users¥Public¥vba¥test.txt
    Exists   ->True
    BaseName ->test
    ExtName  ->txt
    FileName ->test.txt
    PFolder  ->C:¥Users¥Public¥vba
    DriveName->C:
    
    Path     ->¥¥SHARE-PC¥share¥vba¥test.xlsx
    Exists   ->True
    BaseName ->test
    ExtName  ->xlsx
    FileName ->test.xlsx
    PFolder  ->¥¥SHARE-PC¥share¥vba
    DriveName->¥¥SHARE-PC¥share

 
ファイルシステムオブジェクトのプロパティ・メソッド
フォルダのパス情報を表示する例

タイトルとURLをコピーしました