サイトについて      連絡先   検索

VBA ファイルの移動

はじめに

Excel VBA マクロでファイルを移動する方法を紹介します。

MoveFile 関数を使って、指定したファイルを他のフォルダに移動できます。

ワイルドカードを使って複数のファイルや全てのファイルをまとめて移動できます。

  • 目次
    • FileSystemObject について
    • ファイルの移動

FileSystemObject について

ここでは VBA の標準の関数より便利な FileSystemObject を使った方法を紹介しています。基本的な使い方については「FileSystemObject ファイル操作の基礎」をご覧ください。

コードを見やすくするため FileSystemObject を参照設定しています。また、エラー処理は行っていません。

ファイルの移動

指定したファイルの移動


Dim fso As FileSystemObject
Set fso = New FileSystemObject ' インスタンス化
  
Call fso.MoveFile("D:\Tips.txt", "D:\TipsFolder\TipsMove.txt") ' ファイル名を指定して移動
Call fso.MoveFile("D:\Tips.txt", "D:\TipsFolder\") ' 同じファイル名で移動 (D:\TipsFolder\Tips.txt)

' 後始末
Set fso = Nothing

fso.MoveFile関数で指定したパスのファイルを移動します。

第 1 (source) 引数に移動するファイルのパスを指定します。ファイルが存在しないときはエラーが発生します。パスにはワイルドカードを指定できますが、詳しくは下記の「複数のファイルの移動」をご覧ください。

第 2 (destination) 引数に移動先のパスを指定します。ファイル名を含めるとそのファイル名で移動します。パスの最後を \ 記号にすると、そのフォルダの中に同じファイル名で移動します。フォルダが存在しないときはエラーが発生します。既に同じ名前のファイルが存在するときはエラーが発生します。上書きはできません。

フォルダ内のファイルを移動


Dim fso As FileSystemObject
Set fso = New FileSystemObject

Dim fl As Folder
Set fl = fso.GetFolder("D:\") ' フォルダを取得

Dim f As File
For Each f In fl.Files ' フォルダ内のファイルを取得
    If f.Name = "Tips.txt" Then                   ' フォルダ内の移動したいファイル
        Call f.Move("D:\TipsFolder\TipsMove.txt") ' ファイル名を指定して移動
        Call f.Move("D:\TipsFolder\")          ' 同じファイル名で移動 (D:\TipsFolder\Tips.txt)
    End If
Next

' 後始末
Set fso = Nothing

fso.GetFolder関数で指定したパスの Folder オブジェクトを取得します。フォルダが存在しないときはエラーが発生します。

fl.Filesプロパティから、そのフォルダの File オブジェクトの一覧を取得できます。

f.Nameプロパティから、そのファイルの拡張子付きの名前を取得できます。これで移動したいファイルか判定します。

f.Move関数でそのファイルを移動します。使い方は上記で説明したfso.MoveFile関数と同じです。MoveFile の第 1 (source) 引数に、そのファイルのパスが渡されます。

複数のファイルを移動


Dim fso As FileSystemObject
Set fso = New FileSystemObject

Call fso.MoveFile("D:\Tips*.txt", "D:\TipsFolder\") ' 複数のファイルをまとめて移動
Call fso.MoveFile("D:\*", "D:\TipsFolder\")         ' 全てのファイルをまとめて移動

' 後始末
Set fso = Nothing

fso.MoveFile関数の第 1 (source) 引数にワイルドカードを指定して、一致する複数のファイルをまとめて移動できます。1 つもファイルが一致しないときはエラーが発生します。

使用できるワイルドカードには次のものがあります。

D:\Tips*.txtを指定すると次のファイルが一致します。


D:\Tips.txt
D:\Tips1.txt
D:\Tips12.txt
D:\Tips123.txt

D:\Tips?.txtを指定すると次のファイルが一致します。


D:\Tips.txt
D:\Tips1.txt
D:\Tips2.txt

D:\TipsFolder\*を指定すると、TipsFolder フォルダ内のすべてのファイルと一致します。

第 2 (destination) 引数には必ずパスの最後を \ 記号にしてフォルダを指定します。フォルダが存在しないときはエラーが発生します。

ワイルドカードに一致したすべてのファイルが指定したフォルダに移動されます。

移動中に既にファイルが存在してエラーが発生したときは、そこで処理が中断されます。それ以降のファイルは移動されません。

  • 目次
    • FileSystemObject について
    • ファイルの移動