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

締切り済みの質問

2つの列のANDで一致したファイルの移動

とあるシートの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 →ここでエラー出る(実行時エラー53
ファイルが見つかりません)
Set fso = Nothing

MsgBox "終了"

End Sub

投稿日時 - 2020-10-05 20:26:37

QNo.9807938

困ってます

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

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

回答(4)

ANo.4

タイトルを変えて全く同じ質問する意図は何でしょうか?
前回の質問を誤って締め切ってしまったのでしょうか?

投稿日時 - 2020-10-06 17:53:47

ANo.3

エラーを無くすのでしたら以下のように変更してみてください。
MsgBoxは出すと鬱陶しいので一応コメントにしてます。

'C:\before内に残っているファイルを、C:\after2に移動
Dim fso As Object
Dim MFir As String
Dim SFir As String
Dim buf As String

Set fso = CreateObject("Scripting.FileSystemObject")

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

SFir = "C:\after2\"

buf = Dir(MFir)
If buf = "" Then
' MsgBox "残っているファイルはありません。", vbInformation
Exit Sub
End If

fso.MoveFile MFir, SFir
Set fso = Nothing

MsgBox "終了"

投稿日時 - 2020-10-05 21:48:40

ANo.2

No1の補足です。

残っているファイルを移動より前の部分を実行は

Set fso = CreateObject("Scripting.FileSystemObject")
の左のグレーの部分をクリックしてブレークポイント「茶色(色は違うかもしれません)の●が付いてその行が選択された状態」でVBAを実行するとそこでVBAがいったん止まります。

投稿日時 - 2020-10-05 21:32:31

ANo.1

C:\before\にファイルが無いとそのエラーになります。
残っているファイルを移動より前の部分を実行してその時にC:\before\にファイルがあるかどうか確認してください。

投稿日時 - 2020-10-05 21:27:20

あなたにオススメの質問