ここから本文です

複数のファイル名の一部(日付)を一括で変更するマクロについて 先ほどこちらの...

pin********さん

2018/3/2900:32:47

複数のファイル名の一部(日付)を一括で変更するマクロについて
先ほどこちらのサイトで素晴らしいマクロを教えていただいたのですが、質問が消されていてお返事ができなかったので再び投稿させていただきます。
先ほ

どの方が見てなかったら他の方でもいいのでご教示いただければと思います。
教えていただいた下記マクロにて見事に、同フォルダ内の複数ファイルの日付だけを一括で変えることができたのですが、「パス名が無効です」とのポップアップが毎回出てきます。
どうすればでてこなくなりますでしょうか?

Sub Sample()
Dim myPath As String, BeforeText As String, AfterText As String
Dim myFile As String 'この変数が宣言されていませんでした。
'フォルダ選択のダイアログを開く。
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = True Then myPath = .SelectedItems(1) & "\"
End With
If myPath = "" Then Exit Sub
BeforeText = "9月"
AfterText = "10月"
myFile = Dir(myPath & "*.xls?")
Do Until myFile = ""
Name myPath & myFile As myPath & Replace(myFile, BeforeText, AfterText)
myFile = Dir()
Loop
End Sub


マクロは複雑で本当によくわからないです・・・
たびたびすみませんが教えてください。どの方が見てなかったら他の方でもいいのでご教示いただければと思います。
教えていただいた下記マクロにて見事に、同フォルダ内の複数ファイルの日付だけを一括で変えることができたのですが、「パス名が無効です」とのポップアップが毎回出てきます。
どうすればでてこなくなりますでしょうか?

Sub Sample()
Dim myPath As String, BeforeText As String, AfterText As String
Dim myFile As String 'この変数が宣言されていませんでした。
'フォルダ選択のダイアログを開く。
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = True Then myPath = .SelectedItems(1) & "\"
End With
If myPath = "" Then Exit Sub
BeforeText = "9月"
AfterText = "10月"
myFile = Dir(myPath & "*.xls?")
Do Until myFile = ""
Name myPath & myFile As myPath & Replace(myFile, BeforeText, AfterText)
myFile = Dir()
Loop
End Sub


マクロは複雑で本当によくわからないです・・・
たびたびすみませんが教えてください。

閲覧数:
328
回答数:
3

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

tra********さん

2018/3/2901:06:35

私のPCでは
>「パス名が無効です」とのポップアップが毎回出てきます。
という症状は再現できないです。

またなにかエラーが発生するようなコードでもなさそうです。

なにか手をいれるとしたら、↓の変更ですが、この変更をしたから、変化があるというものではないです。ロジックが解りやすくなるという程度。

With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = True Then myPath = .SelectedItems(1) & "\"
End With
If myPath = "" Then Exit Sub



With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = True Then
myPath = .SelectedItems(1) & "\"
Else
Exit Sub
End If
End With

  • 質問者

    pin********さん

    2018/3/2918:14:41

    回答ありがとうございます。やはり何回やっても「パス名が無効です」のポップアップが出てきます・・・

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

m3_maki0さん

2018/4/320:31:53

横から失礼します。


db1********さん 2018/3/29 21:03:18
> 名前を書き換えるブックが開いていると、パス名が無効ですと表示されますが、処理自体ができません。

pin********さん 2018/3/30 19:50:30
ファイル名を変更するファイルとマクロファイルすべて同じフォルダ内に格納し、

以上から
マクロファイルは開いている訳ですから、
そのファイル名を変更しようとしてエラーになっていると思われます。

処理が正常に終了すると思われるのは、
マクロファイルが最後に処理されるようなファイル名になっているのでしょう。

一度、マクロファイルを他のフォルダに移動して動作確認してください。

対策としては、
変更しようしているファイルがマクロファイルではないことを確認してからリネームする、
というのが簡単でしょう。

If myFile <> ThisWorkbook.Name Then
Name myPath & myFile As myPath & Replace(myFile, BeforeText, AfterText)
End If

db1********さん

2018/3/2911:44:38

Windows10、Excel2010で試しましたが、エラーは出ませんでした。
エラー番号が表示されているなら、その番号、そしてOSも明記されると良いと思います。

可能性として、以下の事例がありました。
http://officetanaka.net/excel/vba/error/execution_error/error_75.ht...
又は、
対象ブックが読み取り専用だったり・・・・
https://www.tipsfound.com/vba/19075


試してみて、処理が正常に終わったのかどうか不明でしたので、以下のように
msgboxを追加してみました。処理後、処理件数を表示させます。


Sub フォルダー選択し特定ファイルの名前変更()
Dim myPath As String, BeforeText As String, AfterText As String
Dim myFile As String 'この変数が宣言されていませんでした。
Dim i As Long '★

'フォルダ選択のダイアログを開く。
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = True Then myPath = .SelectedItems(1) & "\"
End With

If myPath = "" Then
MsgBox "フォルダーが選択されませんでした。" '★
Exit Sub
End If

BeforeText = "9月"
AfterText = "10月"

myFile = Dir(myPath & BeforeText & "*.xls?") '★
If myFile = "" Then
MsgBox "該当ファイルがありませんでした。" '★
Exit Sub
End If

Do Until myFile = ""
Name myPath & myFile As myPath & Replace(myFile, BeforeText, AfterText)
myFile = Dir()
i = i + 1
Loop

MsgBox i & "件、リネームを完了しました。" & vbCrLf & vbCrLf & _
"変更前語句=" & BeforeText & " 変更後語句=" & AfterText '★

End Sub

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる