• ベストアンサー

エラーがたまにでます

下記マクロはネットで見つけたものですが、綺麗に動くのですがたまにエラーがでます パスのエラー?で止まるのですが 何か治したいほうが良いところがもしわかれば教えていただきたいです Sub updFileName() 'フォルダパスを宣言 Dim path As String Dim j As Integer 'A2セルの文字をパスに設定 path = Cells(2, 1) & "\" j = 1 'B4セルからファイル名を更新 Do Until Cells(j + 3, 1) = "" 'A列のファイル名をB列のファイル名に更新 Name path & Cells(j + 3, 1) As path & Cells(j + 3, 2) j = j + 1 Loop End Sub ネットは、これです↓ https://skainoblog.com/renamefile/ なんか、変更が途中で止まる、、ことがあるんです。そしたらパスのエラー?とでてました

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.4

たまにという事なので Fso.MoveFile mPath & Cells(i, "A").Value, mPath & Cells(i, "B").Value のあとに Cells(i, "A").Interior.Color = vbGreen として成功したらセルをグリーンに塗るようにしておくとエラーになったときにグリーンの下のセルがエラーだと分かりますからそこを見て何かおかしくないか確認するようにしたらどうでしょう。

123mi123
質問者

お礼

色々考えて下さり、大変ありがとうございました 今日は試す時間なかったんですが必ず試します。色付けもしてみます!!感謝いたしますーーー!!🙇‍♀️

Powered by GRATICA

その他の回答 (3)

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.3

「変更後のファイル名」としましたが元ファイル名にも入力ミスか何かで使えない文字が入力されていないかも確認してみてください。

123mi123
質問者

補足

んーファイル名につけれないものは付けてなくて フォルダ内のファイル名をひっぱってきて、変更後のファイル名をエクセルに打ち込んでか、らの、ファイル名変更!なので なぜエラーが出るのか、、、 悲しかったです 色々付け足してるし 上手く動いているのに時たま出るエラーが そしてエラー後空白にすると上手くいかないし、もちろんのことながら

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.2

あと状況によっては 変更後のファイル名に以下の文字が含まれていると「パスが見つかりません」というエラーになりますので確認してみてください。 Windowsでファイルやフォルダーに「使わない方がいい」文字 https://ascii.jp/elem/000/004/030/4030753/

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

以前にファイル名によってはNameで変更しようとするとエラーになることがあるというお話がありました。 https://okwave.jp/qa/q10229987.html それに該当するかどうかは分かりませんが、とりあえず以下のようにして試してみてください。 元のコードを利用するとしたら Sub updFileName() 'フォルダパスを宣言 Dim path As String Dim j As Long Dim Fso As Object Set Fso = CreateObject("Scripting.FileSystemObject") 'A2セルの文字をパスに設定 path = Cells(2, 1) & "\" j = 1 'B4セルからファイル名を更新 Do Until Cells(j + 3, 1) = "" 'A列のファイル名をB列のファイル名に更新 Fso.MoveFile path & Cells(j + 3, 1), path & Cells(j + 3, 2) j = j + 1 Loop Set Fso = Nothing End Sub 全く新しく考えたら(A列のデータは元のファイル名だけで途中空白があったとしても最後のデータまで元ファイル名として) Sub Test() Dim mPath As String Dim LastRow As Long, i As Long Dim Fso As Object Set Fso = CreateObject("Scripting.FileSystemObject") mPath = Cells(2, "A").Value & "\" LastRow = Cells(Rows.Count, "A").End(xlUp).Row For i = 4 To LastRow If Cells(i, "A").Value <> "" And Cells(i, "B").Value <> "" Then Fso.MoveFile mPath & Cells(i, "A").Value, mPath & Cells(i, "B").Value End If Next Set Fso = Nothing End Sub

123mi123
質問者

補足

めっちゃいいですね!! このマクロだと、ファイル名変えなくていいのにな、とか、エラーでたから途中まではファイル名変わったのにな、と言う時、途中空白にできなかったんです! 考えてくださったのだと、変更したくないファイルが出てきても、応用ききますね!空白がokだと ありがとぅございます  感謝しかないです 早速試してみます!!m(_ _)mありがたき

関連するQ&A