大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAを使ってフォルダやファイルのコピー、移動、削除、作成の方法をまとめました。これさえ覚えておけばフォルダとファイル操作は十分です。

はじめに

Excel VBAを使ったフォルダとファイル操作をまとめてみました。

この内容を覚えておけばフォルダとファイル操作は十分ですのでご覧いただければと思います。

また、ネットワークドライブ上のフォルダ・ファイルも操作できます。

必要なのはこちらのコードになります。

VBAコード(まとめ)

'参照設定の仕方です
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject") 

'フォルダコピー(参照設定が必要です)
FSO.CopyFolder A, B, False(もしくはTrue)

'フォルダ移動(参照設定が必要です)
FSO.MoveFolder A, B

'フォルダ削除(参照設定が必要です)
FSO.DeleteFolder A

'フォルダ新規作成
MkDir A

'ファイルコピー(参照設定が必要です)
FSO.CopyFile A, B, False(もしくはTrue)

'ファイル移動(参照設定が必要です)
FSO.MoveFile A, B

'ファイル削除(参照設定が必要です)
FSO.DeleteFile A

'複数フォルダ、ファイルを扱う場合
ワイルドカード"*"を使う

では説明していきます。

目次から見たい項目へ移動すると便利ですよ。

目次

フォルダコピー

フォルダをコピーするコードです。参照設定が必要なりますので最初に参照設定します。

コピー元フォルダとコピー先フォルダは、"C:\○○○\○○○"としてください。

コピー先フォルダのフォルダ名を変更することでフォルダ名を変えてコピーすることができます。

3つ目の引数で上書き禁止(True)上書き許可(False)を指定します。

VBAコード(フォルダコピー)

'参照設定します
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")  

'Moto・・・コピー元フォルダ("C:\○○○\○○○")
'Saki・・・コピー先フォルダ("C:\○○○\○○○")
'False・・・上書き禁止(上書き許可:True)
FSO.CopyFolder Moto, Saki, False

フォルダ移動

フォルダ移動もコピーと同様で参照設定して"C:\○○○\○○○"の形でフォルダ名を書きます。

コピーと違うのは、引数が2つになり上書き禁止or許可の引数はないので注意です。

VBAコード(フォルダ移動)

'参照設定します
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")  

'Moto・・・移動元フォルダ("C:\○○○\○○○")
'Saki・・・移動先フォルダ("C:\○○○\○○○")
FSO.MoveFolder Moto, Saki

フォルダ削除

フォルダ削除も参照設定します。引き数は1つになります。

VBAコード(フォルダ削除)

'参照設定します
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")  

'Moto・・・削除フォルダ("C:\○○○\○○○")
FSO.DeleteFolder Moto

フォルダ新規作成

フォルダの新規作成は参照設定せず使うことができます。楽ちんですね。

VBAコード(フォルダ新規作成)

'Moto・・・フォルダ名(C:\○○○\○○○)
MkDir Moto

ファイルコピー

続いてファイルのコピーです。こちらは参照設定が必要になります。引数は3つ必要となります。フォルダのコピーと似ていますね。

フォルダのコピーと違うのはファイルパスの最後の部分です。

"C:\○○○\○○○.txt"のように"\○○○.txt"のファイル名まで書く必要があります。

VBAコード(ファイルコピー)

'参照設定します
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject") 

'Moto・・・コピー元ファイル("C:\○○○\○○○.txt")
'Saki・・・コピー先ファイル("C:\○○○\○○○.txt")
'False・・・上書き禁止(上書き許可:True)
FSO.CopyFile Moto, Saki, False

ファイル移動

ファイル移動もファイルコピーと同様で参照設定をします。また引数は2つになります。

ファイル移動もファイルコピーと同じようにC:\○○○\○○○.txt"とファイル名まで書きます。

VBAコード(ファイル移動)

'参照設定します
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject") 

'Moto・・・移動元ファイル("C:\○○○\○○○.txt")
'Saki・・・移動先ファイル("C:\○○○\○○○.txt")
FSO.MoveFile Moto, Saki

ファイル削除

ファイル削除もそのたファイル操作と同じで参照設定をしてファイル名まで記載します。

VBAコード(ファイル削除

'参照設定します
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")

'Moto・・・削除するファイル("C:\○○○\○○○.txt")
FSO.DeleteFile Moto

複数フォルダの場合

複数のフォルダを一度に操作したい場合はワイルドカード"*"を使用します。

ワイルドカード"*"はすべてを含むというような意味になります。

"C:\○○○\○○○"以下のすべてのフォルダの場合は"C:\○○○\○○○\*"のように記載します。

こちらは"*"を使ったフォルダコピーの例です。

VBAコード(複数フォルダの場合)

'参照設定します
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject") 

'Moto・・・コピー元フォルダ("C:\○○○\○○○\*")
'Saki・・・コピー先フォルダ("C:\○○○\○○○\")
'False・・・上書き禁止(上書き許可:True)
FSO.CopyFolder Moto, Saki, False

複数ファイルの場合

複数ファイルの場合もフォルダと同様にワイルドカード"*"を使って複数ファイルを一度に操作できます。

"C:\○○○\○○○"以下のすべての".txt"ファイルは"C:\○○○\○○○\*.txt"になります。

こちらは"*"を使った複数ファイルコピーの例です。

VBAコード(複数ファイルの場合)

'参照設定します
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")

'Moto・・・コピー元ファイル("C:\○○○\○○○\*.txt")
'Saki・・・コピー先ファイル("C:\○○○\○○○\")
'False・・・上書き禁止(上書き許可:True)
FSO.CopyFile Moto, Saki, False

ちなみに"C:\○○○\○○○"以下のすべての".xlsx"ファイルは"C:\○○○\○○○\*.xlsx"になりますし、

"C:\○○○\○○○"以下のすべてのファイルは"C:\○○○\○○○\*"になります。

いろいろと応用が利きそうですね。

おわりに

今回はExcel VBAを使ったフォルダとファイル操作をご紹介しました。この内容を押さえておけばフォルダとファイル操作は十分です。

フォルダやファイル操作を忘れたというときはまたご覧くださればうれしいです。次回は私がよく使っているフォルダのバックアップについてご紹介したいと思います。こちらも使える内容かと思いますので是非ご覧ください。

最後までご覧いただきありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す