プロが教える店舗&オフィスのセキュリティ対策術

タイトルの通りです。
検索すると「シートそのものを非表示にし、表示か非表示かを編集できなくするためのパスワードをかける」など書いてあるところばかりで、欲しい情報がありませんでした。
シートの存在そのものは非表示にせず、シートの存在は下のべろで見えるが、そこをクリックするとパスワードを求められる、というようにしたいです。
パスワードを入れて入っても、一度そのシートを離れれば戻るときにはまたパスワードを求められるのが理想的です。
よろしくお願いします。

A 回答 (3件)

非表示方式なら、すでに、


http://oshiete.goo.ne.jp/qa/10456549.html
で披露しました。こちらは、マクロを不可にしたら、中身は見えません。

しかし、こちらのご質問は、そのままでは、VBA内では不可能だと思っています。

Workbook_SheetActivate(ByVal Sh As Object)
では、開けた後に発生するものです。シートを開けさせない、つまりクリツクを帳消しにすることは不可能だと思います。

>シートの存在は下のべろ(シートタブ)で見えるが、そこをクリックするとパスワードを求められる、

これは、コントロール・ボタンの仕様です。シートタブに、一般的にはそのような機能はありません。先程、Excelの構造をResource Hacker で調べてみましたが、不慣れなせいか良く分かりません。そのものの機能は調べても見当たらないと思います。

>一度そのシートを離れれば戻るときにはまたパスワードを求められるのが理想的です。
マウスで動かしている分には、Excelは反応してくれますが、何もしないままですと、今回作ったものは閉じてしまいます。

全体のマクロは、ご興味がなければお見せすることはありませんが、とりあえず、そのイントロの部分だけを見せます。これはボタンのみです。これはシステムですから、一部のコードだけみても、雰囲気ぐらいで意味もありませんが、添付画像のようになります。

Sub AddButton() '①
'シート1以外のボタンを付ける
Dim y1 As Double, x1 As Double, x2 As Double, y2 As Double
Dim i As Long, j As Long
Application.Goto Worksheets(1).Range("A1"), True
y1 = ActiveWindow.UsableHeight / 2
 With Worksheets("Sheet1")
  For i = 2 To Worksheets.Count
    x1 = 5 + (40 * j)
    x2 = 40
    y2 = 15
   With .Buttons.Add(x1, y1, x2, y2)
    .Caption = Worksheets(i).Name
    .OnAction = "SheetsOpen"
    .Placement = xlFreeFloating
   End With
   j = j + 1
  Next
 End With
End Sub
'--続く--
「エクセル、特定のシートにパスワード(閲覧」の回答画像3
    • good
    • 1

Workbook_SheetActivate(ByVal Sh As Object)


のイベントに記述すれば可能かと。
まず当該シートでない場合にはかならずシート名を
変数に記憶します。
当該シートの場合は、記憶した変数のシートに戻してから
パスワードの合致を確認してから表示すればよいのでは?

マクロ禁止されたら没ですけど・・・。
    • good
    • 0

>シートの存在そのものは非表示にせず、シートの存在は下のべろ[シートタブ]で見えるが、そこをクリックするとパスワードを求められる、



ずっと調べてみましたが、少なくとも、ご希望の仕様はVBA内では、不可能だと思います。シートタブ属性のEXCEL7 Class にシートタブ・コントロールがあれば可能ですが、そのようなものはありません。
例えば、UserForm やホームシート(Sheet1)上で、ボタン・コントロールを設けたりするぐらいしか思いつきません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A