VBAでファイル名の一括変換
VBAで、
①フォルダ内のファイル名をBセルに取得
②Cセルに変更後のファイル名を入力(手動)
③Bセルのファイル名をCセルのファイル名に変換
という処理をしたいと考え、
以下のようなコードを書きました。
VBA
1Option Explicit 2'プログラム1|プログラム開始 3Sub ファイル名取得() 4 5 'プログラム2|FileSystemObjectの設定 6 Dim fs As Scripting.FileSystemObject 7 Set fs = New Scripting.FileSystemObject 8 9 'プログラム3|シート設定 10 Dim ws As Worksheet 11 Set ws = Worksheets("ファイル名変換") 12 13 'プログラム4|ダイアログを開いてフォルダ選択 14 Dim path As String 15 With Application.FileDialog(msoFileDialogFolderPicker) 16 If .Show = True Then 17 path = .SelectedItems(1) 18 End If 19 End With 20 21 'プログラム5|選択したフォルダが存在するかどうかチェック 22 If fs.FolderExists(path) = False Then 23 MsgBox "フォルダを選択してください" 24 Exit Sub 25 End If 26 27 'プログラム6|フォルダを取得 28 Dim basefolder As Scripting.Folder 29 Set basefolder = fs.GetFolder(path) 30 31 'プログラム7|フォルダ内のファイルを取得 32 Dim myfiles As Scripting.Files 33 Set myfiles = basefolder.Files 34 35 'プログラム8|変数設定 36 Dim I As Long 37 Dim myfile As Scripting.File 38 39 'プログラム9|フォルダ内のファイルを取得 40 For Each myfile In myfiles 41 I = I + 1 42 ws.Range("A1").Offset(I, 0).Value = I 43 ws.Range("B1").Offset(I, 0).Value = fs.GetFileName(myfile) 44 Debug.Print fs.GetBaseName(myfile) 45 Next 46 47 Dim filesort As Long 48 filesort = Range("B" & Rows.Count).End(xlUp).Row 49 Range("B1:B" & filesort).sort Columns("B"), xlAscending, Header:=xlYes 50 51 'プログラム10|オブジェクト解放 52 Set myfile = Nothing 53 Set myfiles = Nothing 54 Set basefolder = Nothing 55 Set fs = Nothing 56 57'プログラム11|プログラム終了 58End Sub 59'プログラム1|ファイル名変更 60Sub ファイル名変更() 61 62 Dim changeSheet As Worksheet 63 Dim lastRow, I As Long 64 Dim folderName, oldFile, newFile As String 65 66 Set changeSheet = Worksheets("ファイル名変換") 67 68 With Application.FileDialog(msoFileDialogFolderPicker) 69 If .Show = True Then 70 folderName = .SelectedItems(1) 71 End If 72 End With 73 74 lastRow = changeSheet.Cells(Rows.Count, "B").End(xlUp).Row 75 76 For I = 2 To lastRow 77 78 oldFile = folderName & "\" & changeSheet.Cells(I, "B") 79 newFile = folderName & "\" & changeSheet.Cells(I, "C") 80 81 Name oldFile As newFile 82 83 Next I 84 85End Sub
元のファイル名は『令和3年10月11.docx』~『令和3年10月132.docx』です。
変更後のファイル名は『番号_名前_分類1_分類2_内容.docx』です。
上のコードで、『令和3年10月11.docx』から『令和3年10月119.docx』まではうまく実行できました。
ところが、『令和3年10月120.docx』で
実行時エラー '52'
ファイル名または番号が不正です
と出てしまい、そこから先が変更できなくなってしまいました。
エラーが出ているのは Name oldFile As newFile の行です。
原因は何でしょうか。
そしてどのように書き換えれば解決できるでしょうか。
ご指導いただければ幸いです。
よろしくお願いいたします。
エラーになる『令和3年10月120.docx』のときの変換後のファイル名を教えて下さい。
回答1件
あなたの回答
tips
プレビュー