エクセルVBAで複数のファイルを移動する

エクセルで、複数のファイルを移動させることは、良くあるのではないでしょうか。複数のファイルを移動させる時、移動させる場所が分かりにくいところにあると、移動場所を探すのは大変です。ファイルをドラッグして簡単に移動することもできますが、移動させる時に、誤って他の場所に移動させてしまったことはないでしょうか。このような失敗をしないためにも、VBAを使うと、簡単にファイルを移動させることができます。ここでは、エクセルVBAで、複数のファイルを移動させる方法を紹介しています。複数のファイルを移動させるには、MoveFile メソッドを使っています。MoveFile メソッドにワイルドカードを使用すると、特定の文字列を含むファイルを移動させることもできます。

 

 

MoveFile メソッド

MoveFile メソッドは、ファイルを移動するときに使用します。複数のファイルを、移動させることもできます。

MoveFile メソッドの構文 : Object.MoveFile source, destination

   Object   : FileSystemObject オブジェクトを指定します。

   Source   : 移動するファイルを指定します。

   Destination : ファイルの移動先を指定します。

引数 Sourceには、ワイルドカードを使用できます。ワイルドカードを使用して、全てのエクセルファイルを移動させたり、ファイル名に、一部の文字を含むファイルを移動させることもできます。

 

 

1つのファイルを移動する

エクセルVBAで、1つのファイルを移動させましょう。

「顧客フォルダ」にある「契約一覧表.xls」を、「契約フォルダ」に移動させます。

Sub ファイルの移動()
Dim fso As Object
Dim MFir As String
Dim SFir As String
Set fso = CreateObject(“Scripting.FileSystemObject”)
MFir = “D:\顧客フォルダ\契約一覧表.xls”
SFir = “D:\契約フォルダ\”
fso.MoveFile MFir, SFir
Set fso = Nothing
End Sub

複数のファイルを移動する

エクセルVBA、で複数のファイルを移動させるコードです。

「顧客フォルダ」にあるエクセルファイルを、全て、「契約フォルダ」に移動させましょう。

Sub 複数のファイルを移動()
Dim fso As Object
Dim MFir As String
Dim SFir As String
Set fso = CreateObject(“Scripting.FileSystemObject”)
MFir = “D:\顧客フォルダ\*.xls”
SFir = “D:\契約フォルダ\”
fso.MoveFile MFir, SFir
Set fso = Nothing
End Sub

 

 

特定の文字を含んだファイルを移動する

MoveFile メソッドで、ファイル名に、一部の文字を含むファイルを移動させましょう。

「顧客フォルダ」にある、「契約」で始まるエクセルファイルを、「契約フォルダ」に全て移動させます。

Sub 特定の文字を含むファイルを移動()
Dim fso As Object
Dim MFir As String
Dim SFir As String
Set fso = CreateObject(“Scripting.FileSystemObject”)
MFir = “D:\顧客フォルダ\契約*.xls”
SFir = “D:\契約フォルダ\”
fso.MoveFile MFir, SFir
Set fso = Nothing
End Sub

「∗」アスタリスクの位置によって、移動させるファイルが違ってきます。

「*契約.xls」は、「契約」で終わるエクセルファイルを、「*契約*.xls」は、「契約」を含むエクセルファイルを移動させます。

ワイルドカードには、「?」疑問符を使うこともできます。「?」は、1文字を表しますので、「∗」と使い分けましょう。

 

 

指定したファイルやフォルダがない場合エラーを回避

MoveFile メソッドでファイルを移動させる時、指定したファイルやフォルダが存在しない場合は、エラーになります。

そのエラーを回避するコードです。

エラーになった場合は、エラーを表示させないで、MsgBox でメッセージを表示させましょう。

Sub ファイル移動のエラーを回避()
Dim fso As Object
Dim MFir As String
Dim SFir As String
Set fso = CreateObject(“Scripting.FileSystemObject”)
MFir = “D:\顧客フォルダ\契約一覧表.xls”
SFir = “D:\契約フォルダ\”
If Dir(“D:\顧客フォルダ\契約一覧表.xls”) <> “” Then
fso.MoveFile MFir, SFir
Set fso = Nothing
Else
MsgBox “フォルダを確認して下さい。”, vbInformation
End If
End Sub

複数のファイルを移動できるMoveFile

エクセルVBAで、複数のファイルを移動させる時、MoveFile メソッドを使います。MoveFile メソッドは、ワイルドカードを使えるので、エクセルファイルを全て移動させたり、名前に特定の文字を含むファイルを移動させたりすることができます。ただし、指定したファイルやフォルダがなっかた場合はエラーになるので、気を付けましょう。エラーを表示させたくない場合は、エラーを回避できます。エクセルVBAで、ファイルを移動させる方法は他にもありますが、色々なファイル移動させたい時は、MoveFile メソッドを使いましょう。

こちらの記事もご覧ください。⇒エクセルVBAでフォルダをフォルダごと移動させる