<スポンサーリンク>

【VBA】指定したフォルダのファイル一覧を取得、名前を一括で変更する方法

この記事は約4分で読めます。
コピーボタン
記事のタイトルとURLをコピー
<スポンサーリンク>

名前一括変換の忘備録です。

スポンサーリンク

【VBA】指定したフォルダのファイル一覧とリンクを取得

まずは、指定したフォルダのファイル一覧と、そのリンクを取得するプログラムで、
ファイル一覧を取得します。

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Sub ファイル一覧()
Dim buf As String
Dim i As Long
Dim Path As String
  
'フォルダの選択
    With Application.FileDialog(msoFileDialogFolderPicker)
    .Show
    Path = .SelectedItems(1)
    End With
  
'エクセルのみ抽出
    buf = Dir(Path & "\*.xlsx")
     
    Cells(2, 3).Value = "フォルダ⇒"
    Cells(2, 4).Value = "=HYPERLINK(""" & Path & """,""リンク"")"
    Cells(2, 5) = Path
      
      
'CELL B2からスタート。
      
      
   Cells(4, 2) = "No"
   Cells(4, 3) = "ファイル名"
   Cells(4, 4) = "リンク"
   Cells(4, 5) = "パス"
   Cells(4, 6) = "名前を変更したい場合↓"
       
     i = 4
      
    Do While buf <> ""
        i = i + 1
'No
        Cells(i, 2) = i - 4
'ファイル名
        Cells(i, 3) = buf
'リンクを
        LINK = Path & "\" & buf
        Cells(i, 4).Value = "=HYPERLINK(""" & LINK & """,""リンク"")"
        Cells(i, 5).Value = LINK
  
        buf = Dir()
    Loop
     
    Columns(5).ShrinkToFit = True
 
     
  
End Sub

そのあと、F列に変更したい名前を入力し、
下記プログラムを実行することで、名前を変更します。
(.xlsxなどを入力しなくても、同様の拡張子をつけるようにif分岐させています)

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Sub ファイル名前変更()
Dim buf As String
Dim i As Long
Dim Path As String
  
'フォルダの選択
    Path = Cells(2, 5)
     
    LASTY = Cells(Rows.Count, 3).End(xlUp).Row
 
    For i = 5 To LASTY
     
        If Cells(i, 6) <> "" Then
         
            OldName = Path & "\" & Cells(i, 3)
 
            '拡張子有り無しで分岐
            If InStr(1, Cells(i, 6), ".") > 0 Then
             
                NewName = Path & "\" & Cells(i, 6)
             
            Else
             
                KAKUCHOUSHI = Mid(Cells(i, 3), InStr(1, Cells(i, 3), "."))
                NewName = Path & "\" & Cells(i, 6) & KAKUCHOUSHI
             
            End If
         
            '名前の変更
            Name OldName As NewName
            Cells(i, 7) = "完了"
         
        End If
     
    Next
  
End Sub

コピーボタン
記事のタイトルとURLをコピー
エクセル
スポンサーリンク
スポンサーリンク
nujonoaをフォローする

コメント欄

<スポンサーリンク>
タイトルとURLをコピーしました