アクセス上位ページ
 
最近の更新内容
(2).FSOによるファイル操作 ⇐ [PREV]
[NEXT] ⇒ (2)-b.FSOによるファイル操作A

Excel VBA ≫ 3.FSO - FSOによるファイル操作(2)-a.FSOによるファイル操作@

【ページ内リンク】

ファイルシステムオブジェクトを使用したファイル操作@

このページでは下表のメソッドについて説明します。 これらはすべて 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 ( Path )
  • 引数で指定したファイルパスのファイルオブジェクトを返します。 ファイルパスは事前に次の 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
    


  • fso.FileExists ( Path )
  • 引数で指定したファイルパスの存在チェックを行い、結果を 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
    

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

    <使用例>
    Dim fso     As Object
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    Debug.Print fso.GetBaseName("C:\Users\xxx\Desktop\test.txt")
    
    'オブジェクト変数クリア
    Set fso = Nothing
    

    <実行結果(イミディエイトウィンドウ)>
    test
    


  • fso.GetExtensionName ( Path )
  • 引数で指定したファイルパスの拡張子を返します。

    <使用例>
    Dim fso     As Object
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    Debug.Print fso.GetExtensionName("C:\Users\xxx\Desktop\test.txt")
    
    'オブジェクト変数クリア
    Set fso = Nothing
    

    <実行結果(イミディエイトウィンドウ)>
    txt
    


  • fso.GetFileName ( Path )
  • 引数で指定したファイルパスのファイル名を返します。

    <使用例>
    Dim fso     As Object
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    Debug.Print fso.GetFileName("C:\Users\xxx\Desktop\test.txt")
    
    'オブジェクト変数クリア
    Set fso = Nothing
    

    <実行結果(イミディエイトウィンドウ)>
    test.txt
    


  • fso.GetParentFolderName ( Path )
  • 引数で指定したファイルパスの親フォルダを返します。

    <使用例>
    Dim fso     As Object
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    Debug.Print fso.GetFileName("C:\Users\xxx\Desktop\test.txt")
    
    'オブジェクト変数クリア
    Set fso = Nothing
    

    <実行結果(イミディエイトウィンドウ)>
    C:\Users\xxx\Desktop
    


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

    <使用例>
    Dim fso     As Object
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    Debug.Print fso.GetFileName("C:\Users\xxx\Desktop\test.txt")
    
    'オブジェクト変数クリア
    Set fso = Nothing
    

    <実行結果(イミディエイトウィンドウ)>
    C:
    
    上記で解説した 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
    

    <実行結果(イミディエイトウィンドウ)>
    ※ファイルが存在する場合の実行結果です。
    
    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
    

カテゴリ内ページ



Page
Top