実務では、ワークシートの名前を、ブック名(ファイル名)と同じにしたいということがあります。
ワークシート名をブック名と同じにすることがよくあるのなら、マクロを作成しておくと便利です。
VBA(Visual Basic for Applications)で、アクティブなシートの名前を、ブックと同じ名前にするマクロを作成しましたので、ご紹介しておきます。
Sub アクティブシートの名前をブックと同じ名前にする()
Dim bk_name As String
Dim dot_pos As Long
Dim err_msg as String
On Error GoTo ERR_HANDL
bk_name = ActiveWorkbook.Name
dot_pos = InStrRev(bk_name, ".")
ActiveSheet.Name = Left(bk_name, dot_pos - 1)
Exit Sub
ERR_HANDL:
Select Case Err.Number
Case 1004
err_msg = "ブック名と同じ名前のシートが既に存在しているので、シート名を変更できません。"
Case Else
err_msg = "エラー番号『" & Err.Number & "』のエラーが発生しました。"
End Select
MsgBox err_msg
End Sub「ActiveWorkbook.Name」で、アクティブなブックの名前を取得できます。
ただしActiveWorkbookのNameプロパティで取得できるブック名は、拡張子の含まれたものになります。
ブック名をシート名にしたいという場合、拡張子は不要というケースのほうが多いと思いますので、拡張子を削除する処理が必要です。
そのため、
InStrRev関数で、ブック名の右から「.」を探して
dot_pos = InStrRev(bk_name, ".")
「.」の1つ左の文字までの文字列をアクティブシートの名前にしています。
ActiveSheet.Name = Left(bk_name, dot_pos - 1)
もし拡張子を含んだブック名でよければ、「InStrRev(bk_name, ".")」などを調べる必要もなく、いきなり「ActiveSheet.Name = ActiveWorkbook.Name」とすればいいでしょう。
シートにつけられる名前にはいろいろな制限があり、エラーが発生する可能性があるので「On Error GoTo ERR_HANDL」して「ERR_HANDL:」でエラー処理を行っています。
おそらく一番ありがちな、既に同じ名前のシートが存在している場合には
「ブック名と同じ名前のシートが既に存在しているので、シート名を変更できません。」
というメッセージを表示します。
その他のエラーについては「エラー番号『Err.Number』のエラーが発生しました。」というメッセージを表示させていますので、必要であれば「Err.Number」とエラーの内容を調べてCase文を追加していただくといいでしょう。
Home » エクセルマクロ・Excel VBAの使い方 » Workbooks・Workbook » シート名をブック名と同じにするマクロ