And then you have to set a flag, or something, in a table that would let you know it has already run for that month so it wouldn't do it every time.
Plus, what if you don't open it on the first (for example if it were a holiday or a weekend)? You would need the logic for it to check to see if it has run yet this month, regardless of what day it was. If it was, say Monday the 2nd, then it could run and then set the flag and not run again until it was the next month. But you would need to tell it how to determine what is next month.