- 締切済み
Excel 印刷禁止 マクロの作り方
毎年の期末で担当者が変わるため、 3/31で印刷を禁止するマクロを作りましたが、 これを応用して初めての使用後、30日で印刷が出来なくなるように しようと思いましたが、なかなか出来ません。どなたか力を貸してください。 Private Sub Workbook_BeforePrint(Cancel As Boolean) Dim D As Integer D = (Now+30) - Now If D <= 0 Then Cancel = True MsgBox "30日経過しましたので、担当者へ連絡してして下さい。印刷できません", 48, " Else Cancel = False Exit Sub End If End Sub 以上 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- segment800
- ベストアンサー率21% (17/80)
#2です。 あぁ、穴だらけだ。。。w ・初回登録チェックは”Workbook_Open”でしてください ・初回登録した時点で警告を出さずに保存した方がいいかな Application.DisplayAlerts = False あとたぶん、まだまだ穴だらけ・・・w
- segment800
- ベストアンサー率21% (17/80)
Private Sub Workbook_BeforePrint(Cancel As Boolean) Const DAY_LIMIT As Integer = 30 ' 何日で使用不可にするか Const HIDE_SHEET As String = "HIDE_SHEET" ' 隠しシート名 Const START_DAY As String = "$B$1:$B$1" Dim i As Integer Dim f_Match As Boolean ' 初回登録完了か For i = 1 To Sheets.Count If (Sheets(i).Name = HIDE_SHEET) Then f_Match = True Exit For End If Next If (Not f_Match) Then ' 初回使用日を登録 Sheets.Add ActiveSheet.Name = HIDE_SHEET Sheets(HIDE_SHEET).Visible = False Sheets(HIDE_SHEET).Range(START_DAY) = Now Sheets(HIDE_SHEET).Range(START_DAY).Font.ColorIndex = 2 End If ' 使用期間チェック If (Sheets(HIDE_SHEET).Range(START_DAY) + CDate(DAY_LIMIT) <= Now) Then Cancel = True MsgBox "30日経過しましたので、担当者へ連絡してして下さい。印刷できません", 48, "" Else Cancel = False Exit Sub End If End Sub 適当に作ってみましたが 以下注意点 ・マクロを見られたらすぐ使用延長できる ・マクロパスワードはすぐ解除できる(解除出来ない方法もある) ・シートに使用開始日付を書いているのでバレたら使用延長できる とりあえず、シートに書いてるけど、可能であればレジストリに登録してください。
- STICKY2006
- ベストアンサー率29% (1536/5269)
こんちくは。 ん? ん~。。。 >>D = (Now+30) - Now 「Now」は今のシステム日付。。。ですよね。 必ず「30」になるような? >>初めての使用後、30日で印刷が出来なくなるように 「初めての使用」をどこかに記録しておく必要があります。 でないと、「初めての使用から30日経過した」という判断が出来ませんので。 作業用シートを用意しておいて、画面上非表示にでもして、とあるセルに初印刷日を書き込んでおいて、 それと比較していく。のが一番イメージつきやすかったですね。自分としては。 まぁ、それ使用した人が、「上書き保存」しなかったりすると、無意味になりますけどね(笑 それも考えると、こっちから使用したら無理矢理上書き保存してやるのもいいっちゃいいのかな。
お礼
早々のご回答有り難うございます。 確かにD = (Now+30) - Now はまずいかと思いました。 作業シート作製の件、参考にさせて頂きます。
お礼
短時間にこれだけのマクロが出来るのはすごいですね。尊敬します。 よく試用版のソフトで30日で使用不可になるのをよく見てましたから、 私でも可能と思いきや、ここまでの力量がいるとは思いませんでした。 参考にさせて頂きます。 有り難うございます。