ブックが開かれるときに使用期限後ならパスワード入力の結果により閉じてしまいたいが?
Question 102.1   Previous Next
こんにちは。
エクセルブックに使用期限を設け、期限後はパスワードを入力して使用可能にしたいのですが、
「Bookを開いたときに日付を自動で取得して30日間使用できるようにし、その後はパスワード入力で使用期限を解除できるようにマクロを組みたいのですが」、マクロ初心者の私にはあまりの難題です。

こちらのサイトのマクロを組み合わせて、ブックを開いて日時指定でエクセルが日付で閉じるマクロは出来たのですが、自分の思っているようなマクロ組は出来ません。
こちらが私が組み合わせた日付で閉じるマクロですが一様作動します。(エクセル2003でテスト)
ですがこのマクロを組み込んであると、期限が過ぎるとブックが5秒ほどで閉じてしまうため、修正が大変です。
'===================================================================
Sub Auto_Open()
    指定日時 = DateValue("2010/07/09")
    待ち時間 = TimeValue("00:01:00")
                            '指定時刻に他プロシージャが実行中の場合の待ち時間 ※2
    Application.OnTime DateValue(指定日時), _
        "指定日時に実行するマクロ名", _
        TimeValue(待ち時間)
End Sub

Sub 指定日時に実行するマクロ名()
    指定時刻 = Now + TimeValue("00:03:00")  '現在時刻より何分後 ※2
    待ち時間 = TimeValue("00:01:00")
                            '指定時刻に他プロシージャが実行中の場合の待ち時間 ※2
    Application.OnTime TimeValue(指定時刻), _
        "一定時間後に実行するマクロ名", _
        TimeValue(待ち時間)
    ActiveWorkbook.Save
    Application.DisplayAlerts = False       '1)閉じる際に確認メッセージを出さない
    Application.Quit                        '2)アプリケーション(エクセル)を終了する
End Sub
'===================================================================
ご伝授いただければ幸いです。 よろしくお願いいたします。
Answer   Copyright (C) 2010.7.8 永井善王
初心者さんということですが、すごく努力されましたね。
しかし、ちょっと難しい方へ行ってしまった感じです。 今回作られた「指定日時に実行するマクロ」は、いずれ役立つときが来るでしょうから、一旦しまって置くことにしましょう。

そして、下記のとおりシンプルに考え、マクロを組んでみましょう。
 1. Auto_Openプロシージャに組み込む (ブックが開かれたときに自動的に実行されるマクロ)
 2. 使用期限の前なら → 開いたままにしておく
 3. 期限後なら → パスワードを入力してもらう
 4. パスワードが正しければ → 開いたままにしておく
 5. 正しくなければ → ブックを閉じる
Sub auto_open()
    使用期限 = DateValue("2010/07/08")
    規定パスワード = "123"
    メッセージ = "パスワードは?"
    タイトル = "使用期限を過ぎています。"
    If Date > 使用期限 Then                     'システム日付が使用期限後なら
        入力パスワード = InputBox(メッセージ, タイトル) 'パスワードを入力してもらう
        If 入力パスワード = 規定パスワード Then 'パスワードが正しければ
            Exit Sub                            '開いたままにしておく
        End If
        Application.DisplayAlerts = False       '確認メッセージを表示しない
        ActiveWorkbook.Close                    '閉じる
    End If
End Sub
これで一応、趣旨をかなえることができると思いますが、少し問題が残ります。
使用期限後はパスワードを知っている人だけにしか見せないようにする訳ですが、パスワードチェックをマクロで行っているので、マクロを知っている人なら読解できてしまうでしょう。 また、当然のことですが、マクロを実行しないようにしてブックを開けば (注) 機能してくれません。
(注) いろいろ方法があるが、[Shift]キーを押しながら開く方法が簡単

とわいえ、一般ユーザーの誤使用を防止するためとかには有効でしょうから、試行錯誤してみる価値があるでしょう。
では、うまくいくようになったら連絡してください。

Excel VBA Macro