※本ブログのページには広告主との提携による広告や宣伝、プロモーションが含まれます。当ブログを経由しての商品の購入や、サービス申し込みが発生すると、それらの提携企業からの成果報酬を受けとる場合があります。

VBA|CopyFolderメソッド(ファイルシステムオブジェクト)

CopyFolderメソッドはフォルダを別の場所にコピーします。

※ファイルシステムオブジェクト(FileSystemObject)についてはこちら

CopyFolderメソッドの構文

ファイルシステムオブジェクト.CopyFolder コピーするフォルダ(Source),コピー先のパス(Destination),上書き設定(Overwrite)

CopyFolderメソッドの構成要素と引数

要素/引数 必須/任意 説明
ファイルシステムオブジェクト
(FSO)
必須 ファイルシステムオブジェクトを指定します。
パス
(Path)
必須 結合するパスを文字列を指定します。実在するものでなくても指定可能です。
コピーするフォルダ
(Source)
必須 コピーするフォルダをパスで指定します。
ワイルドカード文字も使用できます。
コピー先のパス
(Destination)
必須 コピーする先をパスで指定します。
ワイルドカード文字は使用できません。
上書き設定
(Overwrite)
任意 コピー先の既存フォルダを上書きするかを指定します。
True:上書きする(初期値)
False:上書きしない

コピー先のパス(Destination)が存在しないときは、エラーが発生します。

コピー先のパス(Destination)に既存ファイルを指定した場合はエラーが発生します。

コピー先のパス(Destination)がフォルダの場合、コピーするフォルダ(Source)とその中に入っているファイルもコピーしようとしますが、このとき上書き設定(Overwrite)がFalseの場合はエラーが発生します。

コピー先のパス(Destination)が読み取り専用のフォルダで、上書き設定(Overwrite)がFalseの場合、既にある読み取り専用ファイルのコピーを実行するとエラーが発生します。

コピーするフォルダ(Source)にワイルドカード文字が指定されていて、どのフォルダとも一致しなかった場合はエラーが発生します。

コピーするファイル(Source)でワイルドカード文字が使用できるのは指定したパスの最後の文字列だけです。

OKな例:”C:\Users\ユーザー名\Desktop\Test\サンプルフォルダ1*”
NGな例:”C:\Users\ユーザー名\Desktop\*\*”

エラーが発生した時点でCopyFolderメソッドは停止しますが、それまでに実行された処理を戻せません。

CopyFolderメソッドをつかったサンプルマクロ

以下のマクロは、引数(Source)に指定したフォルダに入っているすべてのサブフォルダとその中に含まれるファイルを引数(Destination)に指定したパスにコピーします。ただし、Sourceに指定したフォルダの直下にあるファイルはコピーの対象外です。

コピー先に既に同じ名前のフォルダがある場合も処理を実行します。

Option Explicit

Sub ファイルシステムオブジェクト_CopyFolderメソッド()

'ファイルシステムオブジェクトを使うため準備

'①事前バインディングの場合はVBEのツールより参照設定で「Microsoft Scripting Runtime」にチェックをしてください。
Dim FSO As FileSystemObject
Set FSO = New FileSystemObject

'CopyFolderメソッドの使用例
FSO.CopyFolder "C:\Users\ユーザー名\Desktop\Test\サンプルフォルダ1\*", "C:\Users\ユーザー名\Desktop\Test\", True

End Sub

フォルダをコピーするメソッドだね。

PR

独学でプログラミングをはじめてみたけど、このままの学習方法に不安を感じているのなら、
オンラインスクールで現役エンジニアのサポートがあるテックアカデミーがおすすめ。
スキマ時間に学べて仕事も保証。必ず副業、始められます。まずは無料でプログラミング体験

コダマのもりブログはにほんブログ村に登録しています。
ブログの記事が役に立ったと感じて頂けたら、フォローお願いいたします。

コメント

タイトルとURLをコピーしました