Excelスキルアップコレクション
           〜 Something U Want 〜


Google  

WWW を検索
Excelスキルアップコレクション内 を検索
 @     Top  >     Excel VBA スキルアップコレクション Topics  >     (14) ファイルをコピーする

 
(14) ファイルをコピーする

 VBAからファイルをコピーする方法を紹介します。

 下記サンプルコードは、ファイル「C:\Sample\article.csv」をコピーしてファイル「article2.csv」を作成する処理です。

 1行目:  Public Sub Sample_FileCopy_01()
 2行目:  
 3行目:      FileCopy "C:\Sample\article.csv", "C:\Sample\article2.csv"
 4行目:  
 5行目:  End Sub
 FileCopyステートメントでは、コピー元のファイル、コピー先のファイル両方ともフルパス表記にする必要があります。このサンプルコードを実行すると、ファイル「C:\Sample\article.csv」がコピーされてファイル「article2.csv」が作成されます。
<実行前>

<実行後>

 コピー元のファイルが存在していない状態で、FileCopyステートメントを実行するとエラーが発生します。コピー先のファイルが既に存在している場合は、容赦なく上書きします。
 また、FileCopy以外にも、FileSystemObjectを用いてファイルをコピーすることができます。FileSystemObjectの場合は、CopyFileメソッドを使用します。

 1行目:  Public Sub Sample_FileCopy_02()
 2行目:  
 3行目:      Dim FSO As Object
 4行目:  
 5行目:      Set FSO = CreateObject("Scripting.FileSystemObject")
 6行目:  
 7行目:       ' ファイルをコピーする。
 8行目:      Call FSO.CopyFile("C:\Sample\article.csv", "C:\Sample\article2.csv")
 9行目:  
10行目:      Set FSO = Nothing
11行目:  
12行目:  End Sub
  単純なファイルのコピーであれば、プログラムコードが少ない分、FileCopyの方が使い勝手が良いでしょう。しかし、FileSystemObjectのCopyFileメソッドはFileCopyステートメントよりも機能面では優れていると言えます。たとえば、第三引数にFalseを指定すると、コピー先に同一名のファイルが存在している場合、上書きを抑止することができます(※第三引数省略時はTrueを指定した動作と同じになります。)。

…
    ' ファイルをコピーする。
    Call FSO.CopyFile("C:\Sample\article.csv", "C:\Sample\article2.csv", False)
…


   FileSystemObjectのCopyFileメソッドはファイル名にワイルドカード文字を指定することができます。

…
    ' ファイルをコピーする。
    Call FSO.CopyFile("C:\Sample\*.csv", "C:\Sample\value", False)
…
ページの先頭へ