【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

参考②

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

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