How to run a macro every day at a set time
Record the macro in Macro by Zaweba, then add a Macro job in Schedule by Zaweba with a timetable such as every weekday at 7:00, and it runs itself.

To run a macro every day at a set time, record it in Macro by Zaweba and then hand it to Schedule by Zaweba as a Macro job. Schedule takes a timetable written the way you would say it, such as every weekday at 7:00, and plays the macro when the time comes. Each run is recorded in its history, with the result.
Macro itself plays macros when you press a button or a hotkey. The timetable is Schedule's job, and the two are designed to work together, because Macro can be played unattended from the command line and Schedule knows how to run it.
What you need
You need the two free apps, Macro by Zaweba and Schedule by Zaweba, and a macro that already works when you play it by hand. That last point matters more than anything else. A macro that misbehaves while you watch will misbehave at 7:00 when you aren't there.
You also need the PC to be on and the programs the macro uses to be in a state it can work with. A recorded macro repeats clicks and keystrokes, so it depends on the screen looking the way it did when you recorded it.
Step by step
Record the job in Macro. Press Ctrl+Alt+R, do the work once and press Stop. Give the macro a clear name in the library, because that name is how you'll find it again.
Play it a few times at 1x while you watch. Fix anything odd in the step editor: add a Wait step where a program needs a moment to open, or switch a click to positions relative to the active window if the window doesn't always sit in the same place.
Open Schedule by Zaweba and create a job that runs a Macro by Zaweba macro. Choose your macro and type a timetable in plain English. Schedule shows the next 10 runs, so check them before you save. If it reports words it doesn't understand, reword them rather than guessing.
Save the job and wait for the first run, or, better, set a time a few minutes ahead as a test, and watch it happen.
How it runs without you
Behind the scenes, Macro can be started as ZawebaMacro.exe --play followed by a file or a macro name. The options --speed, --times and --exit set the speed, the number of loops and whether the program closes afterwards. A speed or loop count given this way applies to that run only and doesn't change the saved macro.
When the run ends, Macro exits with code 0 if it finished and 1 if it was stopped or failed, and writes one line of output. Schedule records that in its history along with what started the job and how long it took, so a quiet failure at 7:00 shows up when you look later. A failure can also bring up a Windows notification, or an email through your own mail server if you set one up in Schedule.
Getting a reliable daily run
Keep the macro as short as the job allows. Every extra step is another chance for a click to land somewhere unexpected.
The hold Esc panic stop still applies to a scheduled run. If you happen to be at the PC when something goes wrong, hold Esc for a second and the replay stops before its next event, letting go of any keys it was holding. Macro reports that run as stopped, with exit code 1, so the history shows it wasn't a clean finish.
Think about what the screen will look like at the time you choose. A screen saver, a locked session or a program that updates itself overnight can all leave the macro clicking at the wrong thing. Choosing a time when you know the PC is in a normal state saves a lot of puzzling.
If the macro types from a list, remember the list moves on one row per loop. A daily job usually wants a single loop, so check the times setting before handing it to Schedule.
Other ways to do it
You can call ZawebaMacro.exe --play from any program or script that can start another program, and read its exit code. Schedule is the easy route because it already understands Macro jobs and keeps a history, but the command line is there if you have your own way of doing things.