Macro to expire after a specified date

  • Thread starter Thread starter Dileep Chandran
  • Start date Start date
D

Dileep Chandran

Hello Masters,

How can I program a macro so that it expires after Jan 01, 2008. Any
help is greatly appreciated.

Thanks
-DC
 
One way

Sub expire()
MyDate = #1/1/2008#
If MyDate < Date Then
MsgBox "Module expired"
'exit sub
Else
MsgBox "Run module"
'do your stuff
End If
End Sub


Mike
 
Hello Masters,

How can I program a macro so that it expires after Jan 01, 2008. Any
help is greatly appreciated.

Thanks
-DC

if you whant to protect your program? You can do this!

Dim yourdate

Private Sub Workbook_Open()
yourdate = "Jan 01, 2008"
If Date > yourdate Then
Workbooks("name").Close 0
Application.Quit
End If
End Sub

P.S You must protect your macro with password!
 
Thanks a lot Mike and I.R. Both works fine. I appreciate your
immediate assistance.

Regards
-DC
 
And it they disable macros (which may be done for them without them even
knowing it), it will have no effect. Code based workbook protection is
generally a waste of time no matter how elaborate the scheme or how much you
underestimate the intelligence of your users.
 
Tom,

I agree about code based workbook protection being very flimsy but in this
specific case the OP simply wanted the macro to expire and there was no
mention of 'Users' to consider the intelligence of, so:-

1. Macros are disabled by whatever method the macro won't run no matter what
the date.
2. Macros are enabled the macro won't after a specific date.


Mike
 
You could adapt the code on my "Timebombing A Workbook" page at
www.cpearson.com/Excel/WorkbookTimeBomb.aspx . Note that no VBA-based
protection scheme is foolproof. An experienced (and dishonest) user can work
around any protection you provide. However, code such as is on the page
referenced above is "good enough" for the vast majority of users.


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting
www.cpearson.com
(email on the web site)
 
That is one way to read the question and you are certainly correct on that.
 
Sir,
I want to use your "Time Bomb" VB code, but I have question on the "Defined
Name". What name is it that we are to remove from the VB code?
Thanks
 
Specifically what piece of code are you referring to? The web page provides
several different methods of time bombing a workbook. The first one
described on the page uses a defined name called "ExpirationDate" that
contains the data after which the workbook is unusable. If you want to
remove the time bombing, you should delete that name. Of course, then next
time you open the workbook the name will be recreated. To permanently remove
the time bomb, you need to delete the VBA code.


--
Cordially,
Chip Pearson
Microsoft MVP - Excel, 10 Years
Pearson Software Consulting
www.cpearson.com
(email on the web site)
 
Thanks, also, do you put this in the "This Workbook" or it's module?

Option Explicit

Private Const C_NUM_DAYS_UNTIL_EXPIRATION = 90

Sub TimeBombWithDefinedName()
Dim ExpirationDate As String
Dim NameExists As Boolean

On Error Resume Next
ExpirationDate = Mid(ThisWorkbook.Names("ExpirationDate").Value, 2)
If Err.Number <> 0 Then
NameExists = False
ExpirationDate = CStr(DateSerial(Year(Now), _
Month(Now), Day(Now) + C_NUM_DAYS_UNTIL_EXPIRATION))
ThisWorkbook.Names.Add Name:="ExpirationDate", _
RefersTo:=Format(ExpirationDate, "short date"), _
Visible:=False
Else
NameExists = True
End If

If CDate(Now) > CDate(ExpirationDate) Then
MsgBox "This workbook trial period has expired.", vbOKOnly
ThisWorkbook.Close savechanges:=False
End If

End Sub
 
I don't recall if I read it or not.


--
Cordially,
Chip Pearson
Microsoft MVP - Excel, 10 Years
Pearson Software Consulting
www.cpearson.com
(email on the web site)
 
Chip,

Is the same approach used when a "commercial" add-in requieres registration
after a trial period, do you know how it would work?

Do you have any literature on it?

Thanks
 
Hi Chip,

Your code is great, but I seem to have encountered a problem. The code
creates the "ExpirationDate" fine on one machines with the value being the
date e.g. 39555, whilst on a different machine it is being captured as a text
e.g. "18-03-08".

I have changed the the visibility to true so that i could see the value.

ThisWorkbook.Names.Add Name:="ExpirationDate", _
RefersTo:=Format(ExpirationDate, "short date"), _
Visible:=True

I have checked all the settings in excel but could find no differences on
either machines.

Do you have any idea?

Thanks
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top