office  ファイルを期限付きにしたい
 


  
要VBA/サンプル有
TOPExcel/Word/PowerPoint
○考え方
VBAを使って、あらかじめ決められた日を過ぎるとファイルが開けなくなるようにすることはできません。これは、当然ですがVBAがファイルを開かなければ動かないからです。 そこで、ファイルが開かれた直後のタイミングで、日付の比較を行い、期限を過ぎていれば操作できなくする方法を使います。

○ポイントはブック保護
しかし、この考え方には、まだ落とし穴があります。それは、マクロが無効にされた時です。これに対処するため、ブック保護を使います。あらかじめ、シートを非表示にして、ブック保護をかけておき、この保護をマクロで解除するわけです。そうすれば、マクロ無効の場合にもブック保護でシート閲覧が無効になるため、結果的に期限付きファイルになるわけです。

(1) シート名のタブの右側にある「ワークシートの挿入」タブをクリック、または[Shift]+[F11]キーでワークシートを1枚追加

(2) (1)で追加したシートのタブで右クリックして[名前の変更(R)]

(3) 名前を入力する(たとえばTOP")(図1)
office
(図1)シートを挿入して名前変更

(4) "TOP"以外のシートを[Shift]を押しながら選択して右クリック>[非表示(H)]
  (非表示にしたシート名は"Sheet1","Sheet2","Sheet3"とする)
  (この段階でシート"TOP"と「シートの挿入」タブだけが表示される状態)

(5) シート"TOP"のセル"A1"に"=TODAY()"と入力

(6) シート"TOP"のセル"A2"に期限日を入力(たとえば"3/31"など)

(7) シート"TOP"のセル"A3"に"=A1<=A2"と入力
(現在期限内ならTRUE,期限後ならFALSEと表示される)

(8) 「校閲」タブ>変更グループの[ブックの保護]をクリック

(9) ブックの保護ダイアログ(図2)の「シート構成(S)」にチェック
office
(図2)ブック保護ダイアログ

(10) ブックの保護ダイアログの「パスワード(P)」に AAA と入力して[OK]

(11) 「パスワード確認」ダイアログで再入力後[OK]

(12) VBEを開いてThisWorkbookのコードウインドウを開く

(13) Workbook_Openイベントプロシージャのコード例は下記
(14) VBEのプロジェクトエクスプローラ(図3)で現在開いているプロジェクトを右クリック[VBAProjectのプロパティ]>「保護」タブ
office
(図3)VBEプロジェクトエクスプローラ

(15) VBAProjectのプロパティダイアログ(図4)表示
office
(図4)VBプロジェクトをパスワード保護

(16) 「プロジェクトを表示用にロックする(V)」にチェック

(17) 「パスワード(P)」にパスワード入力

(18) 「パスワードの確認入力(C)」にパスワード再入力後[OK]

(19) VBEを閉じてファイルを保存終了

○こんな時に使える
・簡単なシェアウェアを作りたい
・期限を守らせたい

○応用またはその他の方法
EXCEL2000の場合はこちら
期限が来たら自動的にデータを削除するファイルを作りたい
・期限が来たら自動的に他のファイルを削除する

○サンプル
サンプルファイルはこちら(要解凍) 15KB

○注意
この機能はパソコンの時計を使うので、パソコンの時計を戻されたら使用可能になります。

VBAが扱える人にはコード内のブック保護のパスワードを読みとられてしまうので、VBAProjectのプロパティでマクロの保護を忘れないように。

ブック保護はWindowsのシステムの中では比較的弱いものです。本当に重要な会社データや個人情報などは、専用機密ソフトなどを使って、パソコンや記録媒体ごとに保護を施すことをお勧めします。