Home » エクセルマクロ・Excel VBAの使い方 » Workbooks・Workbook » シート名をブック名と同じにするマクロ

シート名をブック名と同じにするマクロ

対象:Excel2003, Excel2007, Excel2010

実務では、ワークシートの名前を、ブック名(ファイル名)と同じにしたいということがあります。

ワークシート名をブック名と同じにすることがよくあるのなら、マクロを作成しておくと便利です。

[スポンサードリンク]

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 » シート名をブック名と同じにするマクロ

「Workbooks・Workbook」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.