VBA ファイル/ワークブックをコピーする

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 4月 25, 2022

このチュートリアルでは、VBAを使用してファイルをコピーする方法を説明します。

VBAでは、ファイルをコピーするために FileSystemObjectが利用できます。

ファイルの名前を変更する方法を学びたい場合は、こちらのリンクをご覧ください → VBA ファイル名の変更

ファイル/ワークブックをコピーする

ここでは、「VBA Folder」フォルダにある既存のファイル「Sample file 1.xlsx」をコピーする方法を説明します。この例では、ファイル名を変更せず、コピーして上書きします。現在、このフォルダにはこの1つのファイルしかありません。

vba copy file コピー ファイル

画像1フォルダ C:\VBA Folder 内のファイル

以下はそのコードです。

Dim oFSO As Object
 
Set oFSO = CreateObject("Scripting.FileSystemObject")
 
Call oFSO.CopyFile("C:\VBA Folder\Sample file 1.xlsx", "C:\VBA Folder\", True)

まず、Scripting.FileSystemObjectクラスのオブジェクトを作成します。

Set oFSO = CreateObject("Scripting.FileSystemObject")

次に、CopyFileメソッドを使用します。

Call oFSO.CopyFile("C:\VBA Folder\Sample file 1.xlsx", "C:\VBA Folder\", True)

このメソッドの第1パラメーターはコピー元のパス、第2パラメーターはコピー先のパスです。3番目のパラメーターはOverwriteです。コピー元とコピー先のパスが同じなので、OverwriteをTrueまたはFalseに設定する必要があります。この例では、元のファイルを上書きすることを意味するTrueを入れています。 では、保存先が同じで、OverwriteをFalseに設定した場合はどうなるのか見てみましょう。コードのこの行を変更するだけです。

Call oFSO.CopyFile("C:\VBA FolderSample file 1.xlsx", "C:\VBA Folder\", False)

その結果、画像2のようなエラーが発生します。

vba copy file error ファイル コピー エラー

画像2.ファイルコピー時のエラー

ファイルをコピーして名前を変更する

ファイルをコピーする際のもう一つの方法は、ファイル名を変更することです。これはファイルのコピーと似ていますが、コピー先のパスを別の名前に設定する必要があります。以下はそのコードです。

Dim oFSO As Object

Set oFSO = CreateObject("Scripting.FileSystemObject")

Call oFSO.CopyFile("C:\VBA Folder\Sample file 1.xlsx", "C:\VBA Folder\Sample file Copy.xlsx")

コードの最後の行からわかるように、ファイルSample file 1.xlsxを同じフォルダにコピーして、Sample file Copy.xlsxという名前にしたいと思います。

Call oFSO.CopyFile("C:\VBA Folder\Sample file 1.xlsx", "C:\VBA Folder\Sample file Copy.xlsx")

これで、VBA Folderにファイルが2つできました。コードの実行結果は画像3のようになります。

vba copy rename file コピー リネーム ファイル

画像3.ファイルをコピーして名前を変更

vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples