VBA(マクロ)でフォルダ作成・コピー・削除

スポンサーリンク

FSO(FileSystemObject)でフォルダ操作

前回の記事でFSO(FileSystemObject)を用いたファイルを操作するコードについてお伝えしました。
今回はフォルダを操作するサンプルコードをご紹介します。ファイル操作の時のコードとよく似ています。

FSO(FileSystemObject)を用いたフォルダの操作

①フォルダを作成する

「FSO.CreateFolder “フォルダを作成する場所”」の形式で記載します。
もともとフォルダが存在する場合はエラーになります。

以下のコードはDドライブに「あいうえお」というフォルダを作成するコードです。
もともと「あいうえお」が存在しているかどうか判断し、存在していない場合フォルダを作成する方法は「④フォルダが存在するか調べる」で記載します。

Sub フォルダを作成するマクロ1

Dim FSO As Object
Set FSO = CreateObject(“Scripting.FileSystemObject”)
FSO.CreateFolder “D:\あいうえお”
Set FSO = Nothing

End Sub

②フォルダのコピー

「FSO.CopyFolder “コピーするフォルダ” “コピー先のフォルダ”」の形式で記載します。
①のCopyFileと使い方はほぼ同じです。ワイルドカードを用いて一気に複数のフォルダをコピーすることもできます。

下の例はDドライブの「あいうえお」というフォルダをEドライブにコピーするコードです。

Sub フォルダをコピーするマクロ1

Dim FSO As Object
Set FSO = CreateObject(“Scripting.FileSystemObject”)
FSO.CopyFolder “D:\あいうえお”,“E:\”
Set FSO = Nothing

End Sub

③フォルダの削除

「FSO.DeleteFolder “削除するフォルダ”」の形式で記載します。
下のサンプルコードではDドライブにある「あいうえお」というフォルダが削除されます。
もちろんフォルダの中身も削除されます。

Sub フォルダを削除するマクロ1

Dim FSO As Object
Set FSO = CreateObject(“Scripting.FileSystemObject”)
FSO.DeleteFolder “D:\あいうえお”
Set FSO = Nothing

End Sub

④フォルダが存在するか調べる

フォルダが存在するか調べるコードは「FSO.FolderExists(“存在するか調べるフォルダ名”)」で記述します。
ファイルが存在するか調べるFileExistsと同じく、これを単独で使用するのではなく条件分岐に記載することが多いと思います。

以下のコードはDドライブに「あいうえお」というフォルダがあるか確認し、ない場合には「あいうえお」というフォルダを作成するVBAコードです。
(フォルダがあるかないか確認せずに「FSO.CreateFolder “D:\あいうえお”」だけを記載すると元々フォルダがあった場合にエラーが出ます。)

Sub フォルダを作成するマクロ2()

Dim FSO As Object
Set FSO = CreateObject(“Scripting.FileSystemObject”)
If FSO.FolderExists(“D:\あいうえお”) = False Then
FSO.CreateFolder “D:\あいうえお”
End If
Set FSO = Nothing

End Sub

スポンサーリンク

PCの環境によって指定するコードが変わる?

フォルダの作成においてはデスクトップやマイドキュメントを指定する場合が多いと思います。これらのフォルダパスは「C:\Users\(ユーザー名)\Desktop」「C:\Documents and Settings\(ユーザー名)\Desktop」のように、中にユーザー名が含まれているし、WindowsのOSの種類によって変わります。

これらのフォルダを指定する場合、通常の記載方法では作成したパソコンでしかきちんと動作しません。

自宅のPCと会社のPCなど、複数の環境で使用できるコードを作成するには、WSH(Windows Scripting Host)を用いてデスクトップやマイドキュメントを指定する方法があります。
これはまた別の機会にお伝えします。

コメント