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

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(Source:=fileFullPath, Destination:=folderPath)
    
    '後片付け
    Set fso = Nothing
    
End Sub

「移動させるのファイルのパス」を設定します(10行目)。

「移動先のフォルダのパス」を設定します(13行目)。

「FileSystemObject」の「MoveFile」メソッドにより、ファイルを移動します。以下の引数を指定します(18~19行目)。

引数「Source」  :移動させるファイルのパス
引数「Destination」:移動先のフォルダのパス

「移動先のフォルダのパス」は最後に「\」を付けてください。付け忘れるとエラー「ファイルが見つかりません」が発生します。

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

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

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

参考③

ファイル名を変更することもできます。

詳細は以下の記事をご確認ください。

PR

参考④

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

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

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