大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAでエクセルのシートを非表示にする方法とその活用例についてご紹介します。非表示にするVBAコードの活用例として指定したシートのみをPDF変換する方法を説明します。シートを非表示にするVBAコードはいろいろと応用できますのでご参考になるかと思います。

はじめに

この記事ではExcelのシートを非表示にするVBAコードとその活用例についてご紹介します。

シートを非表示にすることでシートの可読性が良くなります。

その操作をVBAコードからできるようになると作業効率が上がります。

実用例としてご紹介するPDF変換でもシートを非表示にするVBAコードが活躍します。

シートを非表示にするVBAコードはいろいろと応用ができますのでご参考になるかと思います。

この記事で紹介すること

  • シートを非表示にする方法
  • シートを非表示にするVBAコードの活用例

目次から見たい項目へ移動すると便利ですよ。

目次

Excel VBAでシートを非表示にする

Excel VBAでシートを非表示にするVBAコードをご紹介します。

VBAコード

シート非表示のVBAコードはシンプルです。

'シートを非表示
Sub TEST1()

    'シート名「A」を非表示にする
    Worksheets("A").Visible = False
    
End Sub

シートを非表示にするには、『オブジェクト名.Visible = False』とすればできます。

このVBAコードではシート名が『A』のシートを非表示にするというコードを記載しています。

結果

シートを非表示にするVBAコードを実行してみます。

次のようなシートを用意しました。

用意したシート

用意したシート

A~Dという名前のシートを用意しました。

ではVBAコードを実行してみます。

シート『A』が非表示となる

シート名がAであるシートが非表示になる

シート名が『A』のシートが非表示になりました。

それ以外のシート『B~D』は表示されたままです。

Excel VBAでシートを表示する

続いて非表示となっているシートを表示するVBAコードをご紹介します。

VBAコード

シートを表示するVBAコードはこちらです。

'シートを表示
Sub TEST2()

    'シート名「A」を表示する
    Worksheets("A").Visible = True
    
End Sub

シートを表示にするには『オブジェクト名.Visible = True』とすればできます。

このVBAコードではシート名が『A』のシートを表示する『Worksheets("A").Visible = True』。としています。

結果

シートを表示するVBAコードを実行してみます。

シート名が『A』のシートをあらかじめ非表示にしてあります。

シート『A』が非表示となっているシート

シート名がAであるシートをあらかじめ非表示にしたブック

シートを表示するVBAコードを実行してみます。

シート『A』が表示される

シート名がAであるシートが表示される

『A』のシートが表示されました。

Excel VBAで指定シート以外を非表示

指定したシート以外を非表示にするVBAコードをご紹介します。

指定したシートだけを表示してそれ以外のシートは見えないようにしたい場合に使えます。

VBAコード

シート名が『A』のシートだけを残してそれ以外を非表示にするVBAコードです。

'シート名「A」以外を非表示
Sub TEST3()
    
    Dim WS
    
    'すべてのシートをループする
    For Each WS In Worksheets
        'シート名が「A」のとき
        If WS.Name <> "A" Then
            'シートを非表示にする
            WS.Visible = False
        End If
    Next
    
End Sub

すべてのシートをループするというVBAコード『For Each WS In Worksheets』を使用します。

シートのオブジェクトが『WS』に入力されますのでシートの名前を『WS.Name』で取得します。

シートの名前『WS.Name』が『"A"』ではない場合はシートを非表示にする。ということをしています。

結果

シート名『A』以外のシートを非表示にするVBAコードを実行してみます。

用意したシートはこちらです。

用意したシート

用意したシート

シート名が『A~D』のシートを用意しました。実行してみます。

シート『A』以外を非表示にする

シート名が『A』以外のシートを非表示にする

シート名が『A』以外のシートが非表示になりました。

特定のシートだけを表示してそれ以外を非表示にしたいといった場合に使えます。

Excel VBAですべてのシートを表示

すべてのシートを表示するVBAコードをご紹介します。

エクセルで資料等を作成していくなかで一旦シートを非表示にしておいたシートをすべて表示させたいといった場合に使えるかと思います。

VBAコード

すべてのシートを表示させるVBAコードはこちらです。

'すべてのシートを表示
Sub TEST4()
    
    Dim WS
    
    'すべてのシートをループする
    For Each WS In Worksheets
        'シートを表示する
        WS.Visible = True
    Next
    
End Sub

すべてのシートをループするVBAコードは『For Each WS In Worksheets』になります。

このVBAコードの中にシートを表示させるVBAコード『WS.Visible = True』を記載します。

これですべてのシートを表示させることができます。

結果

すべてのシートを表示させるVBAコードを実行してみます。

用意したシートには『A~D』のシートが作成されていて『A』以外の『B~D』は非表示となっています。

『B~D』を非表示にしたシート

非表示としたシートを含むエクセルブック

ではすべてのシートを表示させるVBAコードを実行します。

すべてのシートが表示される

すべてのシートが表示される

すべてのシートが表示されました。

Excel VBAで指定した複数シート以外を非表示

指定した複数シート以外を非表示にするVBAコードをご紹介します。

1つのシートだけの表示ではなく指定した複数のシートだけを表示させてそれ以外は非表示にしたいといった場合に使えます。

VBAコード

指定した複数シート以外を非表示にするVBAコードはこちらです。

'シート名「B」, 「D」以外を非表示
Sub TEST5()
    
    'シート名の配列を作成
    Dim WsName
    ReDim WsName(1 To 2) As Variant
    
    'シート名を保存する
    WsName(1) = "B"
    WsName(2) = "D"
        
    Dim WS
    
    'すべてのシートをループする
    For Each WS In Worksheets
        flag = 0
        For i = 1 To 2
            'シート名が一致した場合
            If WS.Name = WsName(i) Then
                flag = 1 'フラグを立てる
            End If
        Next
        'フラグが立っていないとき(指定したシートではない)
        If flag = 0 Then
            'シートを非表示にする
            WS.Visible = False
        End If
    Next
    
End Sub

こちらのVBAコードではシート名が『B』と『D』であるシートだけを残してそれ以外を非表示にするということを記載しています。

最初に表示させたいシート名を『WsName』という配列に保存しています。

すべてのシートをループするVBAコード『For Each WS In Worksheets』を使っています。

シート名が表示させたいシートであった場合『If WS.Name = WsName(i) Then』にフラグ『flag』を立てています。

フラグが立っていない場合、つまり表示させたいシートではない場合『If flag = 0 Then』にシートを非表示にしています『WS.Visible = False』。

これで指定した複数のシート以外を非表示にすることができます。

結果

指定した複数のシート以外を非表示にするVBAコードを実行してみます。

用意したシートはこちらです。

用意したシート

シート名がA~Dのシートを用意

シート名が『A~D』のシートを用意しました。

シート名が『B』もしくは『D』以外のシートを非表示にしてみます。

『B』と『D』以外を非表示にする

シート名がBもしくはD以外のシートを非表示にする

シート名が『B』と『D』のシートだけが表示されてそれ以外は非表示となりました。

Excel VBA指定したシートだけをPDFへ変換

指定したシートだけをPDFへ変換するVBAコードをご紹介します。

こちらはシートを非表示にするVBAコードをちょっと応用したVBAコードになります。

ExcelをPDFへ変換するとExcelブックのすべてのシートがPDFへ変換されてしまいます。

こちらで紹介するVBAコードを使えば指定したシートだけをPDFへ変換することができます。

VBAコード

指定したシートだけをPDFへ変換するVBAコードはこちらです。

'シート名「B」, 「D」だけをPDFへ変換
Sub TEST6()
    
    'シート名の配列を作成
    Dim WsName
    ReDim WsName(1 To 2) As Variant
    
    'シート名を保存する
    WsName(1) = "B"
    WsName(2) = "D"
        
    Dim WS
    
    'すべてのシートをループする
    For Each WS In Worksheets
        flag = 0
        For i = 1 To 2
            'シート名が一致した場合
            If WS.Name = WsName(i) Then
                flag = 1 'フラグを立てる
            End If
        Next
        'フラグが立っていないとき(指定したシートではない)
        If flag = 0 Then
            'シートを非表示にする
            WS.Visible = False
        End If
    Next
    
    Dim FilePath
    
    'PDFファイルのファイルパスを作成
    FilePath = ThisWorkbook.Path & "\TEST.pdf"
    
    'このブックをPDFファイルへ変換
    ThisWorkbook.ExportAsFixedFormat 0, FilePath
    
    'すべてのシートを表示
    For Each WS In Worksheets
        WS.Visible = True
    Next
    
End Sub

少し長いですが先ほど説明してきたVBAコードを組み合わせたコードとなっています。

VBAコードの手順はこちらです。

  • シート名が『B』もしくは『D』以外のシートを非表示
  • ExcelブックをPDFに変換
  • すべてのシートを表示

シート名が『B』もしくは『D』以外のシートを非表示

シート名が『B』もしくは『D』以外のシートを非表示にします。

'シート名の配列を作成
Dim WsName
ReDim WsName(1 To 2) As Variant

'シート名を保存する
WsName(1) = "B"
WsName(2) = "D"
    
Dim WS

'すべてのシートをループする
For Each WS In Worksheets
    flag = 0
    For i = 1 To 2
        'シート名が一致した場合
        If WS.Name = WsName(i) Then
            flag = 1 'フラグを立てる
        End If
    Next
    'フラグが立っていないとき(指定したシートではない)
    If flag = 0 Then
        'シートを非表示にする
        WS.Visible = False
    End If
Next

ExcelブックをPDFに変換

ExcelブックをPDFに変換するVBAコードを記載します。

'PDFファイルのファイルパスを作成
FilePath = ThisWorkbook.Path & "\TEST.pdf"

'このブックをPDFファイルへ変換
ThisWorkbook.ExportAsFixedFormat 0, FilePath

ExcelブックをPDFへ変換する際には表示されているシートだけがPDFへ変換されるという特徴を利用しています。

すべてのシートを表示

PDFへ変換したいシート以外を非表示にしていましたので最後にすべてのシートを表示します。

'すべてのシートを表示
For Each WS In Worksheets
    WS.Visible = True
Next

これで指定したシートだけをPDFへ変換することができます。

結果

指定したシートだけをPDFへ変換するVBAコードを実行してみます。

用意したシートはこちらです。

用意したシート

各シートにシート名が記載されたシートを用意

各シートにシート名が記載されたシートを用意しました。

シート名が『B』と『D』のシートだけをPDFへ変換するVBAコードを実行します。

PDFファイルが作成される

PDFファイルが作成される

PDFファイルが作成されました。

PDFファイルを開いてみます。

指定したシートだけがPDFに変換される

BとDのシートだけがPDFへ変換される

Excelブックのシートの内でシート名が『B』と『D』だけがPDFへ変換さています。

特定のシートだけをPDFへ変換したい場合に使えます。

おわりに

この記事ではExcelのシートを非表示にするVBAコードとその実用例についてご紹介しました。

シートを非表示にすることでシートの可読性が良くなります。

それをVBAコードから操作できるようになると作業効率が上がります。

PDF変換する際に不要なシートを簡単に非表示にできると手間も省けて楽です。

非表示にするVBAコードはいろいろと応用ができるかと思います。

ご参考になればと思います。最後までご覧くださいましてありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す