(1) VBAでシート名をブックを手で開かずに取得してリネームする方法
(1-1) 構文
(1-2) サンプルプログラム
(1-3) 操作動画紹介・VBAダウンロード
(1) VBAでシート名をブックを手で開かずに取得してリネームする方法
(1-1) 構文
①ブックのループ
まずはフォルダの中にあるブック(.xlsx)を順番にループさせます。
- Dim Fso As FileSystemObject
- Set Fso = New FileSystemObject
- Dim fl As Folder
- Dim f As File
- '### フォルダの中のファイルをループ
- For Each f In Fso.GetFolder(InputPath).Files
- [ブックに対する処理]
- Next
②ワークブックを開く
次に各ブックに対して、ワークブックを開きます
- Dim wb As Workbook
- Set wb = Workbooks.Open(f.Path)
③シートのループ
次に開いたワークブックのシートをループします(ブック内に複数シートある場合)。
- For Each Sheet In wb.Sheets
- [シートに対する処理]
- Next
④シート名の変更
最後にSheetsプロパティのシートのName属性を上書きする事で、シート名を変更します。もしブック内に複数シートがある場合は、ここを動的に変えてやる必要があります。
- Sheet.Name = "XXXXXXXX"
(1-2) サンプルプログラム
上記のステップを一連のプログラムにしたサンプルを以下にご紹介します。
(サンプルプログラム)
- Sub ModifySheetName()
- '### ファイルシステムを扱うためのオブジェクトや変数を定義
- Dim Fso As FileSystemObject
- Set Fso = New FileSystemObject
- Dim fl As Folder
- Dim f As File
- Dim InputPath As String: InputPath = ThisWorkbook.Worksheets("F_RenameSheet").Cells(3, 3).Value
- '### フォルダの中のファイルをループ
- For Each f In Fso.GetFolder(InputPath).Files
- '### ワークブック(ファイル)を開く
- Dim wb As Workbook
- Set wb = Workbooks.Open(f.Path)
- '### ワークブックの中のシートをループ
- For Each Sheet In wb.Sheets
- '### 変更前の情報
- Debug.Print "処理ブック:" & f.Name & " 【変更前】シート名: " & Sheet.Name
- '### シート名の変更
- Sheet.Name = "XXXXXXXX"
- '### 変更後の情報
- Debug.Print "処理ブック:" & f.Name & " 【変更後】シート名: " & Sheet.Name
- Next
- '### ブックを保存して閉じる
- '### ⇒通常はポップアップが出てしまい処理中断するため、保存前に一時的にDisplayAlerts属性をFalseに変更
- Application.DisplayAlerts = False
- wb.Close SaveChanges:=True, Filename:=f.Path
- Application.DisplayAlerts = True
- Next
- '### 任意の完了メッセージを出力
- MsgBox "aaaaaaaaaaa"
- End Sub
(1-3) 操作動画紹介・VBAダウンロード
最後に上記のVBAを実行した操作動画と、VBAのダウンロードリンクを掲載します。
(操作動画)
最初は4つのブックのシート名はそれぞれ「aaa」「bbb」「ccc」「ddd」でしたが、VBAを実行して全て「XXXXXX」にリネームされています。
(ダウンロードリンク)
RP-IT0173_VBA_シート名_取得_開かずに