こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

ファイルを移動先のフォルダへ移動させるVBA教えて

とあるシートのB列の値かつAM列の値と、とあるフォルダ内にあるファイルの名称が部分一致したときに、
そのファイルを移動先のフォルダへと移動させるVBAを教えていただけないでしょうか?

この内容のVBAを作ったのですが、エラーが出てしまいます(エラーの箇所はコード内に示している)、またこのエラーが影響しているか分からないのですが分別されているのですが上手くいっていません

VBA初心者なのでどうか分かりやすくお教えお願い致します

Sub 分別()

'移動元のフォルダの設定
Const xFrm As String = "C:\before\"

'移動先のフォルダの設定
Const xTo As String = "C:\after\"

'アクティブになっているシートのB列の値かつAM列の値と、C:\before内のファイルの名称が部分一致した時、そのファイルをC:\afterへと移動する
'((例)B列:M123456、AM列:789、C:\before内のファイル:M123456-789-C12.csv)

Dim i As Long, xFile As String
With ActiveSheet

For i = 3 To .Cells(Rows.Count, 1).End(xlUp).Row
With .Cells(i, 2)
xFile = Dir(xFrm & "*" & .Value & "*")
Do While xFile <> ""
If xFile Like "*" & .Offset(, 37).Value & "*" Then
Name xFrm & xFile As xTo & xFile
End If
xFile = Dir()
Loop

End With

Next i

End With


'C:\before内に残っているファイルを、C:\after2に移動
Dim fso As Object
Dim MFir As String
Dim SFir As String
Set fso = CreateObject("Scripting.FileSystemObject")

MFir = "C:\before\*.*"

SFir = "C:\after2\"

fso.MoveFile MFir, SFir →ここでエラー出る
Set fso = Nothing

MsgBox "終了"

End Sub

投稿日時 - 2020-09-29 20:32:42

QNo.9805614

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

fso.MoveFile MFir, SFir
でエラーが起きるのなら、何度かトライ&エラーしているうちに、すでに SFirが出来ていたのではありませんか?

fso.MoveFile は上書きできませんので、先に SFirの存在を確認する必要があります。
存在するなら削除してから fso.MoveFileするかスキップするかです。

投稿日時 - 2020-09-30 16:43:19

ANo.1

問題なく動きました。
残ったファイルがないという事はありませんか。
どのようなエラーなのでしょう。

投稿日時 - 2020-09-29 21:43:05

あなたにオススメの質問