【VBA】ファイルを移動する

ファイルを移動する方法は複数あります!

ここでは私が考える
 ・可読性が良い方法
を記載します!

移動時にエラーが発生しないように
 ・気を付けるべき点
も記載します!

PR

VBAコード

ここでは例として、
 ・デスクトップ配下のファイル「aiueo.txt」を移動
させます。

移動させるファイル
移動させるファイル
Option Explicit

Sub sample()
    
    Dim fso As Object
    Dim fileFullPath As String
    Dim folderPath As String
    
    '移動させるファイルパスを指定
    fileFullPath = "C:\Users\user\Desktop\aiueo.txt"
    
    '移動先のフォルダパスを指定
    folderPath = "C:\Users\user\Desktop\folder_001\"
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    'ファイルを移動
    Call fso.MoveFile(fileFullPath, folderPath)
    
    '後片付け
    Set fso = Nothing
    
End Sub

「FileSystemObject」の「MoveFile」メソッドで、ファイルを移動できます。

「移動先のフォルダパス」は最後に「\」を付けてください。
付け忘れると以下のエラーとなります。

エラーメッセージ
エラーメッセージ

※エラーメッセージからエラー理由(\の付け忘れ)を推測することは難しいです。付け忘れに気を付けましょう。

PR

実行結果

ファイルを移動できました。

実行結果
実行結果
PR

備考(Nameステートメントについて)

「Nameステートメント」は「ファイル名を変更」するためのモノですが、応用することで「ファイルの移動」もできます。

Option Explicit

Sub sample()
    
    Dim oldFileFullPath As String
    Dim newFolderPath As String
    
    '移動させるファイルのパスを指定
    oldFileFullPath = "C:\Users\user\Desktop\aiueo.txt"
    
    '移動先のファイルのパスを指定
    newFolderPath = "C:\Users\user\Desktop\folder_001\aiueo.txt"
    
    'ファイルを移動
    Name oldFileFullPath As newFolderPath
    
End Sub

ただ私は「Nameステートメント」を使用したファイルの移動は可読性が良くないと考えるため、オススメしません。
※「Name」という英単語(名前)から、「ファイルを移動させている」ということを推測するのは難しいです。

FileSystemObjectMoveFile」の方が可読性が良いと考えるため、オススメします。
MoveFileという英単語(名前)から、「ファイルを移動させているということを容易に推測できます。
※英単語(名前)から処理の挙動を推測できることが、「名前」の素晴らしい部分(メリット)です。
※よって「変数や処理は適切な名前にしましょう」と一般的に言われています。

PR

参考①

移動先のファイルが既に存在している状態で移動を実行すると、以下のエラーが発生します。

エラーメッセージ
エラーメッセージ


エラーが発生しないように、移動させる前に移動先のファイルの存在有無を確認しましょう。


ファイルが既に存在している場合は、削除しておきましょう。
※下記の記事の削除方法は、読み取り専用でないファイルも削除できます。

PR

参考②

フォルダを移動する方法は以下を参照してください。

PR

参考③

上記のVBAコードで使用した以下の詳細については、公式サイトをご確認ください。

●「FileSystemObject」の「MoveFile」メソッド

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