保護されたブックの非表示シートについて
保護されたブックの非表示シートは通常の方法では確認することができません。
このような非表示シートのセル値を、どうやって確認するかについてツイッターに連投しました。
本記事は、連投したツイートに、画像と追加説明を加えてまとめたものです。

ツイート原文
・印刷できません
・コピーで新規ブック作成できません
そして、最も重要なことは、
・非表示シートは見えません。
追加説明
VBAでも印刷もプレビュー表示もできません。
Copyメソッドで、引数省略して新規ブック作成はできません。
他ブックへのコピーは、非表示の種類によって変わります。
Visibleプロパティが、
0 :xlSheetHidden ・・・ 他ブックへコピー可能
2 :xlSheetVeryHidden ・・・ 他ブックへコピー不可
ツイート原文
数式などいろいろ確認していると、どうも非表示シートがあるようです。
でも、シートタブを右クリックしても「再表示」はクリックできません。非表示シートはあるはずなのですが・・・
さて、どうしたら良いでしょうか。
追加説明
・ブックが保護されている
・Visibleプロパティが、2 :xlSheetVeryHidden
これらの時は、手動ではシート表時させることはできません。

ツイート原文
Alt + F11
さて、左のプロジェクトの下に目的のシート名は見えていますか。(見えていない場合の事は2回くらい後で)
見えているなら、それをクリックしてプロパティウィンドウを見てみましょう。
何?、プロパティウィンドウがないですと、
それならF4を押してみよう。
追加説明

ツイート原文
これを「-1 - xlSheetVisible」に変更しましょう。
タイピング得意なら、Ctrl+Gでイミディエイトを表示して、
for i=1 to sheets.Count:sheets(i).visible=true:next
そして指に魂を込めて「Enter」しましょう。
xlSheetVisibleは長いからtrueでOKです。
追加説明


ツイート原文
最初から、Ctrl+Gでイミディエイトを表示して、
for i=1 to sheets.Count:sheets(i).visible=true:next
そして、しっかり指に魂を込めて「Enter」しましょう。
何?、エクセルが怒っている?、実行時エラー?
ちゃんと指に魂をこめましたか?
追加説明

ただし、コピペ(Ctrl+V)は使えなくなっています。
全てタイピングすればそれで構いませんが、コピペしたい場合は一旦新規ブック等の別ブックを表示して、
プロジェクトでその別ブックを選択してからなら、イミディエイト ウィンドウに貼り付けできます。

目的の非表示シートがあるブックをアクティブ(前面に出す)にしてください。
その後に、イミディエイトに入力したものをEnterするようにしてください。

ツイート原文
シートのVisibleプロパティがxlSheetVeryHiddenになっているだけの場合です。
表示できずにエラーになった場合は、ブックに保護がかけられています。
当然パスワードが分からなければ保護解除できません。
さて、では諦めるしかないのでしょうか?
追加説明
上のイミディエイトのマンドで表示されます。
ブックが保護されている場合は、非表示シートを表示することができません。
ツイート原文
それにはイミディエイトで、
for i=1 to sheets.Count:?sheets(i).index,sheets(i).name,sheets(i).codename,sheets(i).visible:next
そして、気合いを入れて「Enter」です。
追加説明

ツイート原文
シート位置,シート名,シートのオブジェクト名,表示
シート名はシートタブに表示されている名称、これは名札に書かれた名前です。
シートのオブジェクト名がいわば本名です。
最後の表示には、-1,0,2の3種類があります。
-1だけが表示されているシートで、0と2は非表示シートです。
追加説明
Index | Name | Codename | Visible |
シート位置 | シート名 | オブジェクト名 | 表示 |
1 | Sheet1 | Sheet1 | -1 |
2 | Sheet2 | Sheet2 | 2 ・・・非表示 |
3 | Sheet3 | Sheet3 | -1 |
ツイート原文
-1 :xlSheetVisible
0 :xlSheetHidden
2 :xlSheetVeryHidden
0と2の違いは、
0はユーザー操作で表示に切り替えられる。
2はユーザー操作では表示に切り替えられません。
これで非表示シートは分かりました。
さて、セルの値はどうやって見たら良いでしょうか?
追加説明
2番目のシートが非表示シートです。
シート名は、"Sheet2"
オブジェクト名は、"Sheet2"
非表示、2 :xlSheetVeryHidden
ツイート原文
?sheets("sheet2").range("A1")
EnterでValueが表示されます。
ちょっと長いですね、もっと短く、
?sheet2.range("A1")
さらに短く、
?sheet2.[A1]
この時のsheet2はシートのオブジェクト名(本名)です。
[]はEvaluateの糖衣構文です。
追加説明

ツイート原文
シート全体をコピーしちゃいましょう。
イミディエイトで、
sheet2.cells.Copy
これでEnter
エクセルに戻って
Ctrl+N(新規ブック)
Ctrl+V(貼り付け)
これでシート全体を見ることが出来ましたね。
追加説明
イミディエイトで、
sheet2.cells.Copy
これでEnterするときは、目的の非表示シートがあるブックをアクティブ(前面に出す)にしておいてださい。
ツイート原文
新規ブックのA1セルで、
=
非表示シートのブックに行って、どのシートでも良いのでA1クリック、すると、
=[Book1.xlsx]Sheet1!$A$1
これを以下のように変更
=[Book1.xlsx]Sheet2!A1
このA1セルをコピーすれば、その範囲のセル値は簡単に見ることができます。
追加説明

このA1セルをドラッグ コピーでも良いし、普通にコピーしても構いません。
セル参照を相対参照にしているので、コピーした先のセルになります。
ツイート原文
非表示シートをそのままにして、取引先に送ってしまったりしないよう、ご注意ください。
必要なシートだけを値貼り付けして送るのが基本です。
追加説明
取引先に開示して良いシートだけにして、適宜値貼り付けを行い数式を抜いてください。
そうしてから、取引先に送るようにします。
これが、Excelファイルを送る時の基本になります。
同じテーマ「エクセル雑感」の記事
エクセル関連ツイートNo5
エクセル関連ツイートNo6
エクセル関連で「いいね」の多かったツイート
保護されたブックの非表示シートについて
VBAコーディング規則に関する連ツイ
将棋とプログラミングについて~そこには型がある~
変数を考えることはロジックを考える事
VBA今日のひとこと/VBA今日の教訓 on Twitter
ローカル版エクセルが「Office Scripts」に変わる日
エクセルVBA 段級位 目安
DXってなんだ? ITと何が違うの?
新着記事NEW ・・・新着記事一覧を見る
WshNetwork(ネットワークドライブの割り当て等)|VBA技術解説(2025-04-09)
TRANSLATE関数(翻訳) DETECTLANGUAGE関数(言語識別)|エクセル入門(2025-04-08)
QRコード、バーコード作成の覚え書き|エクセル関数応用(2025-04-05)
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.繰り返し処理(For Next)|VBA入門
4.変数宣言のDimとデータ型|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ひらがな⇔カタカナの変換|エクセル基本操作
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
10.条件分岐(Select Case)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。