2014年4月21日月曜日

Excel VBA:シート名を取得して目次を作成するマクロ

こんばんは〜
仕事や家庭でExcelを使う機会があるかと思いますが、
Excelファイル中の全シート名を一覧に出来たら楽だな〜
と思ったことはありませんか?
自分はよくあります。
特に仕事で・・・・
相手から送られてきたExcelファイルのシートが100近くなんてこともちらほら。
するとこのマクロの出番です。




以下のVBA記述を個人用マクロブックに保存することで
どのExcelファイルを開いてもシート名の一覧とそのシートのセルA1への
ハイパーリンクが作成されます。

ちなみに、今の記述では「シート一覧」というシートが存在するとエラーで終了します。
その場合は、「NS=・・・」の記述の「シート一覧」を別な名前に変更しておくか
事前にそのシートを削除orリネームしておく必要があります。
#そのうち改善したものをアップしますね。


Sub シート名取得()
'
' Macro1 Macro
'

'

 Dim cellPosX As Integer
 Dim ListWS As Worksheet
 Dim mySCnt As Integer

 NS = "シート一覧"

 Set ListWS = Worksheets.Add()
 ListWS.Name = NS
 mySCnt = ThisWorkbook.Sheets.Count

 For Each MySh In Sheets
    mySN = MySh.Name
    cellPosX = mySCnt + 1

    ListWS.Cells(cellPosX, 2).Value = mySN
   
    ActiveSheet.Hyperlinks.Add _
        Anchor:=Cells(cellPosX, 2), _
        Address:="", _
        SubAddress:="'" & mySN & "'" & "!A1", _
        TextToDisplay:=mySN

    mySCnt = mySCnt + 1
 Next

End Sub

--
以上
今日はここまで
ほな、さいなら〜

0 件のコメント:

コメントを投稿