• ベストアンサー

エクセル2010 複数枚のシートの名前を一度に変更

エクセル2010を使用しています。 複数枚のシート名にそれぞれ次のように名前が入っています。 A001abcdef_R_1_1 A002abcdef_R_1-2 A003abcdef_L_1-1 A004abcdef_L_1-2 A005abcdef_R_2-1 A006abcdef_R_2-2 A007abcdef_L_2_1 A007abcdef_L_2-2 ・ ・ ・ (文字はすべて半角です。) この複数枚のそれぞれのシート名から、アンダーバー(_)とハイフン(-)を削除したいです。 どうぞよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.1

こんな感じでいかがでしょ。 Sub test() Dim mySheet As Worksheet, strName As String   For Each mySheet In Worksheets     strName = mySheet.Name     strName = Replace(strName, "-", "")     strName = Replace(strName, "_", "")     mySheet.Name = strName   Next End Sub 念のため、保存してから試してくださいね。

goseinaito
質問者

お礼

できました!ありがとうございました!

その他の回答 (2)

回答No.3

名前を変換すると重複が発生しそうなので、適当な所(変数定義の下辺り)に、 On Error Resume Next を入れておくのが賢明かも、、、

goseinaito
質問者

お礼

ありがとうございました。

回答No.2

Sub RenameSheets() Const xChar = "-" Const xChar2 = "_" Dim xSheetName As Variant Dim kk As Long Application.ScreenUpdating = False Application.DisplayAlerts = False For kk = 1 To Worksheets.Count xSheetName = Worksheets(kk).Name xSheetName = Application.Substitute(Application.Substitute(xSheetName, xChar2, ""), xChar, "") Worksheets(kk).Name = xSheetName 'MsgBox (Worksheets(kk).Range("A1")) Next kk Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub

goseinaito
質問者

お礼

ありがとうございました。

関連するQ&A