RunMacro Documentation
Learn RunMacro from basics to advanced.
Everything you need to start and master RunMacro — from basic commands to advanced automation workflows.

Schedule macros to run automatically
Open File › QMacro schedules..., tick Enable scheduler, click Add, pick a .qmacro file, choose the schedule type and time, then click OK. RunMacro must be running for time-based schedules to fire.
Prerequisites
- A saved
.qmacrofile that still exists on disk. - RunMacro is running and Enable scheduler is ticked.
- No other macro or QMacro is running when the schedule comes due.
- Browser-mode schedules need a profile CSV imported before saving.
- The run-at-startup option is unavailable on Microsoft Store builds.
Supported modes
- Desktop Mode
- Browser Mode
- QMacro Runner — Schedules always execute inside a QMacro Runner window, never in the macro editor. You can open the Schedule Manager from the Runner too, but Run now and Stop do not work from there — open it from the main window when you need them.
What it does
The Scheduler runs saved .qmacro files at times you define: once, daily, weekly, every N minutes, on a countdown after each run, at Windows startup, or chained after another schedule completes. RunMacro polls for due schedules and hands each one to a QMacro Runner window, recording status, run counts and a result file per run.
When to use it
- Run a workflow at a fixed time each day without pressing anything.
- Repeat a run every N minutes during working hours.
- Chain workflows: when schedule A finishes, schedule B starts.
- Run a macro as soon as the PC starts.
When not to use it
- You need runs while RunMacro is closed — time-based schedules only work while the app is open.
- You want to schedule a
.pmacrofile — the dialog accepts only.qmacro, so export to QMacro first. - You need several schedules running in parallel — only one schedule runs at a time.
Configuration steps
- Open File › QMacro schedules... to reach the Schedule Manager.
- Tick Enable scheduler if it is off.
- Click Add to open the schedule editor.
- In QMacro file: click Select and point to the
.qmacrofile. - Choose Trigger: — By time or After another schedule completes.
- For By time: choose the Schedule type: (Once, Daily, Weekly, Every N minutes, Countdown) then fill in the matching time, date or weekdays.
- Choose the Run mode: Desktop or Browser. For Browser, also set threads, browser, size and click Import CSV.
- Set Loop count: (0 shows
∞meaning infinite) and Run speed:, then click OK. - Watch the Status column in the table; click View results to read each run report.
Every option explained
Expected result
The schedule appears in the table with its next run time. When due, a QMacro Runner window opens and runs the macro; afterwards the row updates with status, run count and the report path. Once schedules disable themselves after running.
Real example
Example: run a workflow at 8:00 every day
- Export the macro to
.qmacroif it is currently a.pmacro. - Open File › QMacro schedules... and tick Enable scheduler.
- Click Add and choose the
.qmacrofile. - Trigger = By time, Schedule type = Daily, Time = 08:00.
- Run mode = Desktop Mode, Loop count = 1, click OK.
- Leave RunMacro open (or also enable the run-at-startup option).
Example: chain schedule B after schedule A succeeds
- Create schedule A as usual and save it.
- Click Add to create schedule B and pick its
.qmacrofile. - Trigger = After another schedule completes.
- Source schedule = A, Condition = Success, Delay = 30 seconds.
- Click OK. B has an empty Next run cell because it waits for A, not for the clock.
- Note: if you stop schedule A mid-run, B is not triggered.
Limitations and failure cases
- Time-based schedules only fire while RunMacro is open and the scheduler is enabled. The run-at-startup option merely creates a Startup shortcut to launch the app; it is not a background service.
- Only one schedule runs at a time. A schedule that comes due while another macro is running is passed over with the Skipped status.
- Missed runs are not caught up. More than about 2 minutes late (for example the PC was off) and that run is skipped rather than queued.
- The schedule editor accepts only
.qmacrofiles; picking a.pmacrois rejected. - Only one schedule may run at PC startup. Enabling it on a new schedule converts the previous one into a disabled Once schedule.
- Deleting a source schedule disables the schedules that depend on it and resets them to the by-time trigger.
- The Stopped status does not trigger chained schedules, even when the condition is Always.
- A running schedule cannot be edited, deleted or disabled — stop the runner first.
- The schedule name is taken from the filename automatically and cannot be typed in.
- When chaining schedules, the QMacro Runner window title may still show the previous run macro name; trust the Status column and the report file rather than the window title.
Tips & common mistakes
Verification details
ui/qmacro_scheduler_dialog.pycore/qmacro_scheduler.py
RunMacro