Skip to main content

Prevent macro from Running Twice in one day (Using GetSetting and SaveSetting to hold values)

Hi one and all,
This time I have come up with a RunOrNot Macro.The purpose of this macro is to restrict user to run the Main Macro (YOUR_MACRO) for once in a day.

Changes required in the code:-
In the Code below you have to change the YOUR_MACRO with your actual main macro.The text of Msgbox can be changed accordingly.


Sub RunOrNot()
    ExDate = GetSetting("Excel", "Forum", "ExDate")
    
    If Not IsDate(ExDate) Then
        SaveSetting "Excel", "Forum", "ExDate", Format(Date, "DD-MM-YYYY")
        MsgBox "This is the first and last time today that you are running the macro.", vbInformation
        Call YOUR_MACRO
    
    ElseIf (Date - DateValue(ExDate)) & 0 Then
        MsgBox "This is the next day. Click OK to run the macro.", vbInformation
        SaveSetting "Excel", "Forum", "ExDate", Format(Date, "DD-MM-YYYY")
        Call YOUR_MACRO
    
    Else
        MsgBox "You have already run this macro today. So now you can't.", vbInformation
    
    End If
End Sub


Explanation:-
Actually, this macro uses Windows registry settings to save current day when the code is run for the first time in a day.
The benefit of using the Registries is that :-
If the user re-downloads the file (having this code inside) on the same computer, even then he will be restricted to run the Main Macro because the ExDate (Current Date) would have already been saved in the windows registry.
I hope you like the concept.
If you have any doubts in implementing it and understanding it then do comment.

Regards,
Vikas Gautam

Comments

Popular posts from this blog

Automation:- Sending Invitation to Meeting Using Excel VBA

Hello Everyone, In one of the previous post, I wrote about automating Sending Emails using Excel VBA. This time I have come up with a pretty similar code. The code below sends Outlook Meeting Invitations to recipients on one click. here is the Code:- Sub Send_Invite_Auto() Dim olApp As Outlook.Application Dim olApt As AppointmentItem Set olApp = New Outlook.Application 'Creating Outlook Session Set olApt = olApp.CreateItem(olAppointmentItem) 'Creating an Appointment With olApt .Subject = "Enter the subject here." 'Subject .Start = DateAdd("d", 5, Now) 'Enter Date + Time here. .Recipients.Add ("example@gmail.com") 'Recipient Name, Alias, or any other Attribute. .MeetingStatus = olMeeting 'olAppointmentItem with Meeting status olMeeting 'becom...

Making Password Protected PDFs using Excel Vba and PDFtk Tool

Hi Everyone, This time, I have come up a VBA Code to generate Password protected PDFs using Excel. Actually, Excel Vba has .ExportAsFixedFormat Method to generate PDFs but this hasn't any Parameter which takes password to protect the PDFs. So I have used PDFtk Tool which provide Command Line Interface to make PDFs protected using Password. Actually, You can do various things using PDFtk Tool command line varying from creating, merging, Protecting and many other. So Download the PDFtk Tool from the following link:- Download PDFtk Tookit Here are the Steps:- 1. Install the PDFtk Toolkit. 2. Use the following code to Print or Export the Activesheet with a password.

Targeting Sendkeys to a Particular Window using Excel VBA

Hi Everyone, Sometimes while doing some VBA stuff, we want to target Sendkeys to a particular window which may or may not be active or present. Here is the code which will first check if the Target window is available by trying to activate it by AppActivate and then Sendkeys as desired. If Target window isn't available then you may wait until it shows up or show an error message. So Here are the code:- 1. For waiting until Windows shows up:- Sub Target_Sendkeys() On Error Resume Next 'Resuming next Statement on Error(5) Do Err.Clear 'Reseting the Err AppActivate "Blogger" 'Put the name of title bar of Target window here. DoEvents 'Avoidings hangs Loop While Err.Number = 5 SendKeys "%{ }r", True 'Restoring the window Application.Wait DateAdd("s", 1, Now) '...