Excel VBA(マクロ)で他のファイルをコピーする方法/FileCopyステートメントの使い方

christmas IT

FileCopyステートメントを使うと、VBAで他のファイルを複製することができます。パスを指定すれば、任意のフォルダにコピーしたファイルを置くことも可能です。

スポンサーリンク

FileCopyステートメントの使い方

ファイルのコピー
FileCopy コピー元 , コピー先
filecopy1
コピーするためのファイルを用意しておきます。
filecopy2
FileCopyステートメントでは、FileCopyの後にコピー元、コピー後のファイル名を指定します。ファイル名のみで実行するとカレントフォルダのファイルに対して処理が走り、
filecopy3
カレントフォルダに指定したファイルが見つからない場合、エラーとなります。
filecopy4
わざわざカレントフォルダを変更しないでも、ファイルのパスを書いてやれば動きます。ここではプロパティからパスをコピーし、
filecopy5
ファイル名の前にくっつけて、\でつなぎます。出力元と出力後のパスは同一としています。
この場合FileCopy “(パス)\abc.txt” , “(パス)\123.txt”というコードになります。
filecopy6
実行すると、名前は変えているものの、ファイルが複製されることが確認できます。
パスを変えてやれば、ちがうフォルダにコピーすることも可能です。

FileCopyの引数名

filecopy10
全く覚える必要はないですが、コピー元ファイルパスにはSource、コピー先ファイルパスにはDestinationという引数名があります。
従って、FileCopy Source:=”(パス)\abc.txt”, Destination:=”(パス)\abc.txt”のように書いても同じように動きます。

同じ名前で実行

filecopy7
同一フォルダ内で同じ名前のファイルを複製しようとすると、
filecopy8
これはエラーとなります。全く同じ名前のファイルを、同じ場所にふたつは作れません。
filecopy9
複製先が別のフォルダであれば問題なく動きます。
また、既に同じ名前のファイルが複製先に存在する場合、コピーしたファイルで上書きされます。

Excelと同じフォルダのパスを取得

name oldpathname4
なるべくパスもコードで取得できたほうが便利です。Excelの現在地であればThisWorkbook.Pathでパスが取得できるので、
filecopy11
たとえばパス名をこれで代用し、FileCopy ThisWorkbook.Path & “\abc.txt”, ThisWorkbook.Path & “\123.txt”のように書くことができます。

なお、FileCopyステートメントは実行中のファイルに対しては実行できません。

Excel(エクセル):コピー、切り取り、貼り付け(ペースト)、オートフィル、クリップボード
Excelのコピー関連まとめです。基本メイン記事でゴリゴリに解説しているのですが、コピー関連の設定だの関数を使ったコピーだのまで一記事に詰め込むのもアレなので、補足的な記事となります。 コピペ、オートフィル コピペ・オートフ...
Excel(エクセル):ファイル、ブック
Excelのファイルやブックにまつわる操作まとめです。広義で言えばすべての操作がそうなんですが、シートはシート、セルはセルで一応分割しています。 ファイル・ブック関連操作 Excelファイル(ブック)を新しく作る方法です。 ...
やりたいことから方法を探すエクセルExcel操作・関数・VBA(マクロ)逆引きまとめ
逆引き(やりたいことから探す)Excel記事まとめ
関数・演算子・メソッド・プロパティ名から探すExcel/VBA(マクロ)使い方・組み合わせ方まとめ
こちらはExcelやメソッドの諸機能を、機能の名称から探せるまとめ記事です。

コメント