How to automate data entry in Windows without coding
Record one pass by hand, make it survive a moved window, and let it repeat while you do something else.
Updated 18 September 2026 · Recording, editing, replay and image anchors are free in Myna Recorder with no time limit.
1. The job
The pattern is always the same: a value sits in one place, a form wants it in another, and there are two hundred of them. Copy the invoice number, paste it into the search box, press Enter, click Approve, wait for the green tick, next. No programming is needed to automate this. You need a recorder, a way to click on things rather than on pixels, and a way to repeat.
2. Record one pass
Turn off mouse-movement recording
Settings → Recording. Without movement the macro is a short list of clicks and keys that goes straight to each target. Record movement only for drawing or hovering.
Press F2, do one item by hand, press F3
Recording is global, so it captures what you do in any application, with the original timing.
Press F4 to replay it, F6 to stop
Learn the Stop key before anything else. It works even when Recorder is not the active window.
The result shows up twice: as a step list you can reorder and retime, and as a readable script in the Script tab.
3. Make it survive a moved window
A recorded click is an absolute screen position. Move the window, change the resolution, or run it on a colleague's PC, and it lands on the wrong thing. The fix is an image anchor: in the Images view, capture the Approve button as a crop and name it. Then the step becomes:
with section("One invoice"):
click_crop("Search box")
type_text("${number}")
press("enter")
wait_for("Result row", timeout_ms=10000, abort=True)
click_crop("Approve")
wait_for("Green tick", timeout_ms=10000, abort=True)
wait_for pauses until the picture is there, so the macro is no longer a bet on how fast the application answers today. Capture crops tightly: the distinctive part and nothing else. The manual covers confidence, region and colour-versus-shape matching.
4. Feed it the data
Recorder reads values off the screen rather than out of a file. Point read_text at the cell or field that holds the next value, store it in a variable, and use ${name} inside any text you type:
number = read_text(region=(120, 300, 160, 28), single_line=True)
click_crop("Search box")
type_text("${number}")
Always give read_text a region. The built-in reader runs on your computer and costs nothing; a second local reader and an AI reader are there for text the first one gets wrong. Numbers can be cleaned with .to_number() and compared. The whole topic is on reading text from the screen.
5. Repeat it
- Repeat in the toolbar runs the macro a set number of times; 0 means until you stop it.
- For looping within one run, use the loop blocks. The command list beside the editor shows each one with a worked example.
- Speed scales the recorded waits from 0.25× to 10×. It cannot make the application respond faster, so if a macro breaks at 4× the fix is wait_for, not a slower run.
- Move to the next item the way you would by hand: press Down in the list, or click the next row's crop.
6. Catch problems
abort=True on a wait_for stops the run when the picture never turns up, instead of pressing Approve on the wrong record. on_fail="again" jumps to a labelled step to retry. For the dialog that appears once a morning, add a watch row: it looks for the error picture throughout the run and can pop up, message you on Telegram or Discord with a screenshot, or stop the macro. Watch rows are part of the Basic plan.
7. Or describe it and let the AI write it
On the Pro plan the assistant writes the script from a description. Capture your crops first, then say what the screen looks like, not just the goal: "click Search box, type the number, press Enter, wait for the result row, click Approve, wait for the green tick" gets a working macro; "process the invoices" gets a question back. Nothing reaches the editor until you press Use, and every reply is checked by the compiler first.