次のサンプルコードを使うと、
- 「ファイルを開く」ダイアログを表示。
- シート名を一括で置換したいエクセルブックを選択。
- エクセルブックに含まれる全シート名を一括で置換する。
という作業を自動化します。
目次
操作方法
1、
「エクセルのシート名を取得して一覧表を作成するエクセルVBA」を実行してシート名を取得。
2、
シート「シート名一覧」の「シート名(変更後)」に希望シート名を入力。
3、
下記サンプルコードを含むエクセルファイルを開き→「開発」→「マクロ」の順でクリック。
「Aシート名置換」→「実行」の順でクリック。
4、
ファイルを開くダイアログが表示されるので、シート名を置換したい対象のエクセルブックをクリックして、「開く」をクリック。
5、
マクロが実行されます。
「シート名一覧」以外のシート名を一括で置換します。
完了です。
サンプルコード
1 2 3 4 5 6 7 8 9 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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
Sub Aファイルを開く() Dim OpenFileName As String OpenFileName = Application.GetOpenFilename("Excelファイル,*.xls*") If OpenFileName = "False" Then MsgBox "キャンセルされました。処理を終了します。" End Else Workbooks.Open OpenFileName End If End Sub Sub Aシート名置換() Dim ws As Worksheet Dim row, col As Long Dim wsNames As Collection Dim sh As Variant, flag As Boolean Set wsNames = New Collection Call Aファイルを開く '画面更新停止 Application.ScreenUpdating = False '確認ダイアログ停止 Application.DisplayAlerts = False For Each sh In Sheets If sh.Name = "シート名一覧" Then flag = True Exit For End If Next sh If flag = True Then Worksheets("シート名一覧").Select Range(Range("A2"), Cells(Rows.Count, 2).End(xlUp)).Select row = Selection.row col = Selection.Column Do While Not IsEmpty(Cells(row, col)) ' KeyがStrig型でないと「型が一致しません」というエラーになる wsNames.Add Item:=Cells(row, col + 1).Value, _ Key:=CStr(Cells(row, col).Value) row = row + 1 Loop For Each ws In ActiveWorkbook.Worksheets On Error Resume Next ws.Name = wsNames.Item(ws.Name) Next Else 'メッセージ表示 MsgBox "シート「シート名一覧」はありません。" & Chr(13) & "先に「シート名取得」を実行して下さい。" & Chr(13) & "処理を終了します" ActiveWindow.Close End If '画面表示ON Application.ScreenUpdating = False End Sub |
コードの特徴
- 「ファイルを開く」ダイアログを表示した後、キャンセルをクリックした場合、
キャンセル処理される様に対応しています。 - 「エクセルのシート名を取得して一覧表を作成するエクセルVBA」と連携可能な様にしています。