即効テクニック

ファイル操作・他アプリケーションとの連携

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

(Access 2000/2002)
● 概要 ●

構文    Object.Move Destination
        Object.Copy Destination, OverWriteFiles


設定項目        内容
Object          Fileオブジェクトを指定[省略不可]
Destination     ファイルの移動先(コピー先)を指定[省略不可]
OverWriteFiles  既存ファイルの上書き可否をTrueまたはFalseで指定[省略可能]


FileオブジェクトのMoveメソッドはファイルを移動します。Copyメソッドはファイルをコピーします。
Fileオブジェクトは、FileSystemObjectオブジェクトのGetFileメソッドにファイル名を指定して取得します。
引数にはワイルドカードは指定できません。
Copyメソッドの引数にTrueを指定すると、コピー先に同名ファイルが存在した場合は上書きされます。引数にFalseを指定すると、コピー先に同名ファイルが存在した場合はコピーされません。
引数を省略すると、Trueを指定したことになります。
サンプルは、「D:\AccessVBA」フォルダの「FileA.txt」ファイルを、「FileB.txt」ファイルとしてコピー後、ファイル名を「FileC.txt」として移動しています。
移動先に同名のファイルが存在するとエラーが発生します。


● サンプル ●
'ファイルを移動(コピー)する(Fileオブジェクト)
'   [ツール]→[参照設定]で「Microsoft Scripting Runtime」をチェック
Sub Sample()
    Dim myFileSystem As New Scripting.FileSystemObject
    Dim myFile       As Scripting.File
    On Error GoTo ErrHandler
    Set myFile = myFileSystem.GetFile("D:\AccessVBA\FileA.txt")
    'ファイルをコピーする(上書き不可)
    myFile.Copy "D:\AccessVBA\FileB.txt", False
    'ファイルを移動する
    myFile.Move "D:\AccessVBA\FileC.txt"
Exit Sub
ErrHandler:
    MsgBox Err.Description
End Sub


● 補足1 ●
Fileオブジェクトを利用してファイルを削除するにはDeleteメソッドを使います。
Moveメソッド、Copyメソッド、DeleteメソッドはFileSystemObjectオブジェクトのMoveFileメソッド、CopyFileメソッド、DeleteFileメソッドと同じ働きをします。
FileSystemObjectオブジェクトの各メソッドでは、ワイルドカードを利用して複数のファイルを操作できます。


● 補足2 ●
FileSystemObjectオブジェクトは利用する前に参照設定を行う必要があります。
参照設定は、[ツール]メニューから[参照設定]コマンドを選択して、[参照設定]ダイアログボックスを表示します。ダイアログボックスが表示されたら、一覧から「Microsoft Scripting Runtime」をチェックして[OK]ボタンをクリックします。