クラスを使用してファイルの移動を作ってみた
タイトルのマクロは、以下です。指定されたファイルを指定されたフォルダから別のフォルダに移動するためのものです。
'****************************
'* ファイルの移動。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