FSOオブジェクトの活用:フォルダパスを取得したい時

VBA

VBAでExcelなどを使うにあたって必ず覚えたほうがいいオブジェクトが

FileSystemObjectオブジェクト (ファイルシステムオブジェクト=FSO)

だと私は思っている。
では、このFSOオブジェクトはどういうものかというと、

  • フルパスからフォルダ名取得
  • フルパスからファイル名取得
  • フォルダ・ファイルの存在有無チェック
  • フォルダ・ファイルのコピーor削除
  • フォルダ・ファイルの移動

・・・などができちゃうオブジェクト!これはすごい。
もちろん、オブジェクトだけでこれらができるのではなく、全てそれぞれにメソッドがありそれを利用することで実現可能になる。

それでは、それぞれどんなふうに使うのかを紹介していく。

スポンサーリンク

フルパスからフォルダ名だけを取得

【やりたいこと】

フルパスからフォルダ名だけを取得したい。
例:
C:\VBA勉強\sample.txt
ここからフォルダ名だけを取得したい。
つまり、欲しい結果は「C:\VBA勉強\」である。

【コード】

Option Explicit
Sub fso_test()
    Dim folderpath As String
    Dim fso As New FileSystemObject
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    folderpath = "C:\VBA勉強\sample.txt"    
    MsgBox "folderpath:" & fso.GetParentFolderName(folderpath)

    Set fso = Nothing
    
End Sub

これは便利。ただ、注意点がある。

【注意点】

FSOオブジェクトを使う時、もし参照設定をしていなかったら

エラーメッセージ

このようなエラーが出てくることがある。
これは「参照設定」をしていないせいである。
なので、こういうエラーが出てきた場合は以下の手順で参照設定をすればOKだ。

参照設定画面
参照設定画面

ここで、もし「Microsoft Scripting Runtime」が見当たらない場合は下の方を見ていけば見つかるので、焦らずに探していくと良い。
見つかればチェックを入れてOKを押すだけである。

それでは、一度やってみよう。きっと、うまくいく。

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