title: "Automate Microsoft Forms without code | axiom" description: "Automate Microsoft Forms without code. Fill and submit forms from a Google Sheet, run test responses, and feed Office forms from your data. From axiom." author: Alex Barlow

Automate Microsoft Forms

Microsoft Forms is great at collecting answers, less so at receiving them from somewhere else. A bot can fill a form for you, entering data from a sheet, submitting a test response, or sending the same answers in on a schedule. Inside Microsoft 365 the responses are already handled, so this is about putting data in. There are three ways to start, with no code, with code, or with a Claude skill.

What I mean by automating Microsoft Forms


Automating Microsoft Forms means a bot fills the form the way a person would. It opens the form link, enters the answers from a sheet or a script, picks the choices, and submits. Run it once for a test, or down a list of rows to send many responses in. The responses you collect already flow to Excel on their own, so the part a bot adds is getting data into the form in the first place.

Power Automate handles the inside


If you live in Microsoft 365, know what is already there. Form responses land in an Excel workbook on their own, and Power Automate can react to each new response, sending a mail, updating a list, kicking off a flow. For reacting to responses inside the Microsoft world, that is the tool, and it is a good one.

What Power Automate does not do is submit a form. It waits for responses, it does not create them. So the browser route covers the other direction, filling Microsoft Forms in, entering data from a sheet, running a test response, or bridging from a system that lives outside your tenant. Power Automate for what happens after a response, a browser bot for putting the response there.

Who this is for


This is for the person in a Microsoft shop who needs data into a form, not just out of it. Migrating answers from an old system, sending a standard response on a schedule, testing a long form before it goes to the org, or feeding a form from a spreadsheet. No-coders and coders both, since you can build it without code and drop into code when you want.

How I'd approach it


Map the sheet to the form first. Each column is an answer, each row is one submission. Open the form, fill the fields in order, handle the choices and ratings, and submit, then come back for the next row. If the form is restricted to your org, sign in first so the bot can reach it.

One row, one submission, mapped to the fields. I would lay out the first draft with Build with description.

Fill Microsoft Forms from a description


Describe your form's fields in plain words in the Chrome extension and it builds the steps for you. Give it a few short lines, check what it made, and run it. Explore no-code.

To the right is an example. Describe your form's fields, and the AI lays out the steps.

Chrome extension
Describe your automation

Instructions

  • Open the Microsoft Form link28 / 500
  • Read the next row from a Google Sheet37 / 500
  • Type the name and email answers31 / 500
  • Pick the choice and the rating30 / 500
  • Submit, then start a fresh response35 / 500

Fill Microsoft Forms in code


Build with code. If you would rather script it yourself, this is the path. Explore code

Connect Playwright (or Puppeteer) to our cloud Chromium and write the same scripts you'd run locally, without managing the browser.

Code tool
Code example
import { chromium } from "playwright";

const browser = await chromium.connectOverCDP(
  `wss://cdp-lb.axiom.ai/?token=${process.env.AXIOM_API_KEY}`
);

try {
  const context = browser.contexts()[0];
  const page = context.pages()[0] ?? await context.newPage();

  // Each row is one submission. These would come from your sheet.
  const rows = [
    { name: "Ada Lovelace", email: "ada@example.com",  rating: "5" },
    { name: "Alan Turing",  email: "alan@example.com", rating: "4" },
  ];

  for (const row of rows) {
    await page.goto("https://forms.office.com/r/your-form");

    // Text answers, matched by their question label
    await page.getByRole("textbox", { name: "Your name" }).fill(row.name);
    await page.getByRole("textbox", { name: "Email" }).fill(row.email);

    // A choice or rating
    await page.getByRole("radio", { name: row.rating }).click();

    await page.getByRole("button", { name: "Submit" }).click();
    await page.waitForSelector("text=Thanks");
  }
} finally {
  await browser.close();
}

Build with a Claude skill

Build no-code or code bots with a skill.

Add the Claude skill and describe your form's fields. It builds the bot for you, no-code or code, filling Microsoft Forms from your data and submitting.

Claude building a Microsoft Forms automation from a description

What can you automate?


Filling and submitting, mostly. A couple of cases worth knowing first.

Works well

  • Filling text answers from a sheet
  • Picking choices, ratings, and dates
  • Submitting one response or a whole list
  • Running a test response before launch
  • Forms that anyone can respond to

Harder

  • Forms restricted to your org, which need a sign-in
  • Branching that changes which questions show
  • File-upload questions

Don't try

  • Stuffing a form with fake responses
  • Submitting to forms you were not given
  • Anything against your org's or Microsoft's terms

What I'd watch out for


Microsoft Forms is simple on the surface, but a few things trip up a fill bot. Here is what I would watch for.

Org-restricted forms need a sign-in

A form set to your organization only will not open without a signed-in account. Carry your session so the bot is already in, or add a sign-in step. A public form skips this entirely.

Match the sheet to the fields

Filling from a sheet works when the columns line up with the questions, in order. Pick each field with the selector tool so the answers land in the right box, and run one row first before you loop a list.

Branching changes the questions

If the form shows different questions based on an answer, the fields shift mid-form. Build for the path your data takes, and test each branch you actually use.

One response per run

Microsoft Forms loads a fresh form for each response. Reopen the form link at the top of every row rather than trying to reset the page, so each submission starts clean.

"The visual builder is a dream come true. No more writing complex scripts!"

Lisa Anderson

"I was skeptical about no-code automation, but Axiom proved me wrong. It's incredibly powerful."

David Wilson

"The support team is amazing, and the product just keeps getting better. Worth every penny."

Emma Davis

"Axiom has saved me countless hours. The automation possibilities are endless."

Robert Taylor

"Axiom has completely transformed how I handle browser automation. The no-code interface is intuitive and powerful."

John Smith

"Finally, a tool that makes browser automation accessible without compromising on power. Highly recommended!"

Michael Chen

"The best investment we've made in our automation workflow. Simple yet powerful."

Jennifer Brown

Fast to build. Easy to run and scale. Outstanding support.

Start for free. No credit card required.