クラスを使用してファイルの移動を作ってみた

タイトルのマクロは、以下です。指定されたファイルを指定されたフォルダから別のフォルダに移動するためのものです。

'****************************
'* ファイルの移動。20230110
'* myFileName:ファイル名
'* mySource:移動元のフォルダ
'* myDestination:移動先のフォルダ
'* クラスを使用して、作り変え。20230227
Sub FileMove(myFileName As String, mySource As String, myDestination As String)
    ' クラス FileObj のインスタンス化。
    Dim F As FileObj: Set F = New FileObj
    
    ' 移動元のフォルダの確認
    If Not F.ExistFolder(mySource) Then
        MsgBox "移動元のフォルダが確認できませんでした"
        Exit Sub
    End If
    ' 移動先のフォルダの確認
    If Not F.ExistFolder(myDestination) Then
        MsgBox "移動先のフォルダが確認できませんでした"
        Exit Sub
    End If
    ' 移動元のファイルの確認
    If Not F.ExistFile(mySource & "\" & myFileName) Then
        MsgBox "移動元のファイルが確認できませんでした"
        Exit Sub
    End If
    ' 移動先に同名ファイルがないかの確認
    If F.ExistFile(myDestination & "\" & myFileName) Then
        MsgBox "移動先に同名のファイルがあります"
        Exit Sub
    End If
    
    ' ファイルの移動
    F.Name = mySource & "\" & myFileName
    F.Move (myDestination)
    
    Set F = Nothing
    
End Sub

各部分の説明

サブルーチンの宣言:

Sub FileMove(myFileName As String, mySource As String, myDestination As String)
  • myFileName は移動するファイルの名前。
  • mySource は移動元のフォルダのパス。
  • myDestination は移動先のフォルダのパス。

FileObj クラスのインスタンス化:

Dim F As FileObj: Set F = New FileObj
  • FileObj クラスの新しいインスタンスを作成します。このクラスにはフォルダやファイルの存在確認、ファイルの移動などの機能が含まれています。

移動元のフォルダの確認:

If Not F.ExistFolder(mySource) Then
    MsgBox "移動元のフォルダが確認できませんでした"
    Exit Sub
End If
  • ExistFolder メソッドを使用して、mySource フォルダが存在するかを確認します。存在しない場合はエラーメッセージを表示してサブルーチンを終了します。

移動先のフォルダの確認:

If Not F.ExistFolder(myDestination) Then
    MsgBox "移動先のフォルダが確認できませんでした"
    Exit Sub
End If
  • ExistFile メソッドを使用して、mySource フォルダ内に myFileName ファイルが存在するかを確認します。存在しない場合はエラーメッセージを表示してサブルーチンを終了します。

移動先に同名ファイルがないかの確認:

If F.ExistFile(myDestination & "\" & myFileName) Then
    MsgBox "移動先に同名のファイルがあります"
    Exit Sub
End If
  • ExistFile メソッドを使用して、myDestination フォルダ内に同名のファイルが存在しないかを確認します。存在する場合はエラーメッセージを表示してサブルーチンを終了します。

ファイルの移動:

F.Name = mySource & "\" & myFileName
F.Move (myDestination)
  • Name プロパティを使用して、移動するファイルのフルパスを設定します。
  • Move メソッドを使用して、ファイルを myDestination フォルダに移動します。

FileObj クラスのインスタンスの解放:

Set F = Nothing
  • FileObj クラスのインスタンスを解放します。

使用例

以下の使用例では、「example.txt」ファイルを「C:\Source」フォルダから「C:\Destination」フォルダに移動します。

Sub ExampleUsage()
    ' ファイルを移動
    Call FileMove("example.txt", "C:\Source", "C:\Destination")
End Sub

FileObj クラスは、以下参照願います

Follow me!