Excel VBA 全シート名を取得する

  • デル株式会社
  • VBA Excel の 全シート名を取得するる

    Excelで全てのシート名を取得して、
    イミディエイトウィンドウに出力する。

    こんなExcel。

    複数シートのExxel

    複数シートのExxel

    ※だいぶ前にここで書いた内容の応用(そのまんまなんだが。。)
    Excel VBA 複数シートをループして処理する

    VBA ソース

    VBA画面を開いて、標準モジュール追加

    ※Excel画面で[alt]キー+[F11]キーで開けます。

    んで下記ソース書き込む(コピペ)

    '**********************************
    'VBAの実行結果には、責任取りません。
    '使用時は自己責任でお願いします。(まぁ、なんも起きんと思うけど。。)
    '**********************************
    
    Public Sub SheetName()
        
        '全シート分ループ
        For Each oSheet In ThisWorkbook.Sheets
            
            ' イミディエイトウィンドウに出力
            Debug.Print oSheet.Name
            
        Next oSheet
        
    End Sub
    
    

    【実行結果】

    VBA実行結果

    ちなみに、イミディエイトウィンドウが表示されてない場合は、
    メニューから、[表示]-[イミディエイトウィンドウ]で表示できます。

    イミディエイトウィンドウの表示方法



    イミディエイトウィンドに直接ソースを記載する

    毎回、標準モジュール追加して(またはフォームでボタンを配置して)って面倒なので、
    イミディエイトウィンドに貼り付けて実行できるように、ちょっとソースを修正してみる。

    こんな感じ。

    
    For Each oSheet In ThisWorkbook.Sheets: Debug.Print oSheet.Name: Next oSheet 
    
    

    命令単位で「:」で区切るのがおまじない。
    また、改行は「_」で、標準出力の「Debug.Print」は「?」で代替できます。

    上記を考慮して、修正してみる。

    
    For Each oSheet In ThisWorkbook.Sheets: _ 
        ?oSheet.Name: _
    Next oSheet
    
    
    

    実際の貼り付けイメージ

    イミディエイトウィンドウへの貼り付け例

    【実行結果】

    実行結果

    んな感じ。

    ちなみに、ファイルに出力するってソースにすると、

    Public Sub SheetName()
    
        Open "d:\test.txt" For Append As #1
        
        For Each oSheet In ThisWorkbook.Sheets
             
            Debug.Print oSheet.Name
            
            Print #1, oSheet.Name
            
        Next oSheet
        
        Close #1
    
    End Sub
    

    自己責任で。

    関連記事

    ページ上部へ戻る