VBA(マクロ)でのファイル作成・コピー・削除

スポンサーリンク

FSO(FileSystemObject)の事前準備

前回の記事でFSO(FileSystemObject)を用いてできることと事前準備についてお伝えしました。今回はサンプルコードをご紹介します。

FSO(FileSystemObject)のコード紹介~ファイル操作~

①ファイルのコピー

「FSO.CopyFile “コピーするファイル” , “コピー先のフォルダ”」の形式で記載します。
以下のコードはデスクトップにある「a.jpg」というファイルをEドライブの「gazou」というフォルダにコピーします。
(「gazou」というフォルダが存在しないとエラーになります。)

Sub ファイルをコピーするマクロ()

Dim FSO As Object
Set FSO = CreateObject(“Scripting.FileSystemObject”)
FSO.CopyFile “D:\a.jpg”, “E:\gazou”
Set FSO = Nothing

End Sub

また名前を変更する場合は「FSO.CopyFile “コピーするファイル” , “コピー先のフォルダ\新しいファイル名”」の形式で記載します。

以下のコードはDドライブにあるa.jpgというファイルをb.jpgの名前にしてEドライブにコピーします。

Sub ファイルをコピーするマクロ2()

Dim FSO As Object
Set FSO = CreateObject(“Scripting.FileSystemObject”)
FSO.CopyFile “D:\a.jpg”, “E:\gazou\b.jpg”
Set FSO = Nothing

End Sub

ファイル名をワイルドカード(*)を用いて表すことで、複数のファイルを同時にコピーすることも可能です。
以下のコードはDドライブにある全てのjpgファイルをEドライブにコピーするコードです。

Sub ファイルをコピーするマクロ3()

Dim FSO As Object
Set FSO = CreateObject(“Scripting.FileSystemObject”)
FSO.CopyFile “D:\*.jpg”, “E:\gazou\”
Set FSO = Nothing

End Sub

②ファイルの削除

ファイルの削除は「FSO.DeleteFile “削除するファイル名”」の形式で記載します。
以下のコードはDドライブのa.jpgのファイルを削除するものです。

Sub ファイルを削除するマクロ1()

Dim FSO As Object
Set FSO = CreateObject(“Scripting.FileSystemObject”)
FSO.DeleteFile “D:\a.jpg”
Set FSO = Nothing

End Sub

ワイルドカード(*)を使用して複数のファイルを一気に削除することもできます。
Dドライブのjpgのファイルを削除するコードは以下のようになります。

Sub ファイルを削除するマクロ2()

Dim FSO As Object
Set FSO = CreateObject(“Scripting.FileSystemObject”)
FSO.DeleteFile “D:\*.jpg”
Set FSO = Nothing

End Sub

③ファイルが存在するか調べる

ファイルが存在するか調べるコードは「FSO.FileExists(“存在するか調べるファイル名”)」で記述します。

主に条件分岐で、ファイルが存在する場合はある処理をして、ファイルが存在しない場合は別の処理をするなど処理を変える場合に使用します。
FSO.FileExists(“存在するか調べるファイル名”)はファイルが存在する場合True、存在しない場合Falseという値になります。

以下のコードはDドライブにa.jpgというファイルが存在する場合、Eドライブにb.jpgとしてコピーし、存在しない場合は「a.jpgはありません」とメッセージを出すサンプルコードです。

Sub ファイルがあるかどうか確認してコピーするマクロ1

Dim FSO As Object
Set FSO = CreateObject(“Scripting.FileSystemObject”)
If FSO.FileExists(“C:\a.jpg”) = True Then
FSO.CopyFile “C:\a.jpg” “D:\b.jpg”
ElseIf
Msgbox ” a.jpgはありません”
End If
Set FSO = Nothing

End Sub

ファイルを作って処理してという流れをVBAで繰り返しているときにファイルがあるかどうかでの条件分岐はかなり使用頻度が高いです。

コメント