Skip to main content

Split Excel Sheets Into Separate Files in Make: No VBA, Just Dropbox and PDF4me

· 19 min read
SEO and Content Writer

PDF4me Excel - Separate Worksheets is a Make action that splits one .xlsx file into a separate workbook per sheet, without VBA or macros. This four-module scenario reads an Excel file from Dropbox, splits it into per-sheet workbooks, iterates over the returned array, and uploads each new .xlsx back to Dropbox with its own filename.

If you've ever inherited a workbook with twenty tabs and needed each tab as its own file, you've probably reached for VBA, a paid desktop splitter, or a very manual "Move or Copy... to new book" ritual. Every option assumes you're going to sit at a laptop and do it once. This walkthrough replaces all of that with a Make scenario that runs on a schedule, works over Dropbox, and hands you clean per-sheet .xlsx files with zero clicks after the first setup.

The flow at a glance
1. Dropbox - Download a File
Reads the source .xlsx from a fixed Dropbox path.
2. PDF4me Excel - Separate Worksheets
Splits the workbook into one .xlsx per sheet and returns an array.
3. Flow Control - Iterator
Loops over the Splitted Worksheet array so every item runs downstream.
4. Dropbox - Upload a File
Writes each per-sheet .xlsx into your output folder with its worksheet name.
The short version

Point Make at a Dropbox Excel file, run it through PDF4me Excel - Separate Worksheets, pipe the returned array through an Iterator, and upload each per-sheet .xlsx into your output folder. Four modules. Zero VBA. Runs every fifteen minutes on schedule, or on demand.

Why-Based Q&A

Why skip VBA entirely? VBA depends on desktop Excel being installed, macros being enabled, and someone sitting in front of the machine when the file arrives. A Make scenario has none of those constraints. It runs in the cloud on a schedule, so a workbook dropped into Dropbox at 3am is already split by 3:15am.

Why do you need the Iterator between split and upload? PDF4me Excel - Separate Worksheets returns an ARRAY of files (one per sheet), not a single file. Dropbox Upload only accepts one file per run, so the Iterator turns the array into individual bundles that the upload module can consume one at a time.

Why does the Culture setting stay on en-US even for European workbooks? The setting controls how numeric and date cells are parsed for internal processing, not how they're stored. Sheet contents are preserved byte-for-byte, so a German invoice with comma decimals still lands intact in each per-sheet file.

Why does each output file carry the worksheet name automatically? The Iterator emits each item with a File Name property already set to the source sheet's name plus .xlsx. Mapping that into Dropbox Upload's file-name field gives you human-readable outputs like Q1.xlsx, Q2.xlsx, Q3.xlsx without any expression work.


What You'll Get

Input: one Excel workbook in /pdf4metest/Excel/Separate Worksheets/Separate.xlsx containing multiple sheets (Q1, Q2, Q3, Summary, etc.). Output: one .xlsx file per sheet, dropped into /pdf4meoutput/, each named after its worksheet.


What You Need

  • Make (formerly Integromat). Open Make. The free plan runs this scenario every 15 minutes, which is plenty for most Excel splitting jobs.
  • PDF4me API key. Get your API key. Connect it the first time you add the PDF4me Excel action.
  • Dropbox account. Any tier works. You'll create two folders: one for the source workbook, one for the split outputs.
  • A multi-sheet Excel file to test with. Any .xlsx with two or more tabs. If you don't have one handy, use the sample below.

Grab the sample first. Drop the source workbook into your Dropbox input folder before you build the scenario, so the trigger has something to see on the first run.


The Flow at a Glance

  1. Dropbox Download a File (trigger and source).
  2. PDF4me Excel - Separate Worksheets with the file mapped in from step 1.
  3. Flow Control Iterator wrapped around the returned Splitted Worksheet[] array.
  4. Dropbox Upload a File with the file name and binary mapped from each iterator item.

Complete flow overview

Make scenario canvas showing four modules connected left to right: Dropbox Download a File (blue), PDF4me Excel Excel Separate Worksheets (green), Flow Control Iterator (green arrow), and Dropbox Upload a File (blue).

Four modules total. The arrow between step 3 and step 4 fans out: one upload per worksheet found in the source file.


Step 1: How do you pull the Excel file from Dropbox in Make?

Flow so far: none, this is the source module.

Add a Dropbox - Download a File module and point it at the workbook you want to split.

  1. Search for Dropbox in the module picker, then choose Download a File.
  2. Configure:
    • Connection: YnooxTestone (or click Add the first time to authenticate with Dropbox).
    • Way of selecting files: Select a file.
    • File: /pdf4metest/Excel/Separate Worksheets/Separate.xlsx.
  3. Click Save and run the module once to confirm the file downloads.

Dropbox Download configuration

Dropbox Download a File configuration in Make with Connection set to YnooxTestone, Way of selecting files set to Select a file, and File pointing to /pdf4metest/Excel/Separate Worksheets/Separate.xlsx.

Fix a single file path here so the split runs deterministically. Switch to Watch Files later if you want it triggered by new arrivals.

Tip. If you want the scenario to fire whenever a new workbook lands, swap this module for Dropbox - Watch Files pointed at the same folder. The rest of the flow works unchanged because it consumes the file object identically.


Step 2: How does PDF4me Excel Separate Worksheets split the workbook?

Flow so far: Dropbox Download a File.

Add the PDF4me Excel action Excel - Separate Worksheets and hand it the file bytes from step 1. It returns an array where every element is one worksheet packaged as its own .xlsx.

  1. Add a module, search PDF4me Excel, pick Excel - Separate Worksheets.
  2. Configure:
    • Connection: My PDF4me Excel connection (or click Add and paste your PDF4me API key).
    • File: Map (toggle on).
    • File Name: 1. File Name from the Dropbox module.
    • Document: 1. Data from the Dropbox module.
    • Culture & Language Settings: en-US.
  3. Save. The module output will include a Splitted Worksheet[] array once the scenario runs.

PDF4me Excel Separate Worksheets configuration

PDF4me Excel module in Make configured for Excel - Separate Worksheets: Connection My PDF4me Excel connection, File set to Map with File Name mapped from step 1 File Name and Document mapped from step 1 Data, Culture & Language Settings en-US.

File Name uses step 1's original name so downstream logs stay readable. Document carries the binary that PDF4me actually splits.

Parameter reference

ParameterTypeRequiredWhat it doesExample
ConnectionAuthyesPDF4me API connection. Add once, reused across scenarios.My PDF4me Excel connection
File NameStringyesSource filename with .xlsx extension. Passed through for logging and downstream mapping.Separate.xlsx
DocumentBinaryyesThe .xlsx bytes to split. Map from any prior module that emits a file.1. Data
Culture & Language SettingsStringyesLocale used to parse numeric and date cells. Does NOT modify stored values.en-US

This is the one line that does the splitting. The action reads the workbook, walks every sheet, and emits one .xlsx per sheet into an array named Splitted Worksheet[]. Everything after this module is plumbing.


Step 3: Iterator - turning the returned array into individual runs

Flow so far: Dropbox Download plus PDF4me Excel Separate Worksheets.

An Iterator takes an array and emits its items one at a time, so any module you put after it runs once per item.

  1. Add a module, search Flow Control, pick Iterator.
  2. Configure:
    • Array: 7. Splitted Worksheet[] (from the PDF4me module output).
  3. Save.

Iterator configuration

Flow Control Iterator in Make with Array set to 7. Splitted Worksheet[] mapped from the PDF4me Excel module output.

One line of configuration. The module number in front of Splitted Worksheet[] will match whatever number Make assigned the PDF4me module in your scenario.


Step 4: How do you upload each split file back to Dropbox?

Flow so far: Dropbox Download plus PDF4me Excel Separate Worksheets plus Iterator.

Add a final Dropbox - Upload a File and feed it the iterator's file properties. Because it sits after the Iterator, it runs once per worksheet.

  1. Add Dropbox - Upload a File.
  2. Configure:
    • Connection: YnooxTestone.
    • Folder: /pdf4meoutput/.
    • File: Flow Control - Iterator (this maps the iterator's current item straight into the file field - no manual name/binary split needed).
  3. Save the module and save the scenario.

Dropbox Upload configuration

Dropbox Upload a File in Make with Connection YnooxTestone, Folder /pdf4meoutput/, and File set to Flow Control - Iterator so each iteration uploads one splitted worksheet.

Picking Flow Control - Iterator instead of mapping File Name and Data separately lets Dropbox use the sheet name PDF4me already assigned to each item.

Tip. If you'd rather prefix or suffix the filename (e.g. 2026-Q1.xlsx instead of Q1.xlsx), switch File back to Map and build the name with an expression like {{formatDate(now; "YYYY")}}-{{2.File Name}}.


Run the Flow and Verify

  1. Save the scenario at the top right.
  2. Click Run once in the bottom-left panel.
  3. Open the run history: each of the four modules should show a green checkmark. On the fourth module you'll see a number badge equal to the number of worksheets in the source file.
  4. Open Dropbox at /pdf4meoutput/ and confirm one .xlsx per worksheet.

What did you actually build? A cloud-native Excel splitter that never needs Microsoft Excel installed anywhere. The same four-module pattern (download plus PDF4me Excel action plus Iterator plus upload) is what powers per-sheet PDF exports, row-based CSV extractions, and any other Excel operation where PDF4me returns an array of files. Swap the middle module and you have a new capability without touching the plumbing.


Common Variations You Can Add Without Rebuilding

Trigger on new files
Swap step 1 for Dropbox Watch Files pointed at the same folder. Now every workbook uploaded to Dropbox gets split within the polling interval, no manual runs.
Convert each sheet to PDF too
Insert a PDF4me - Convert to PDF module between the Iterator and Dropbox Upload. Every per-sheet .xlsx becomes both a workbook and a PDF in one pass.
Fan out to different folders
Add a Router after the Iterator with filters on the file name (e.g. sheets starting with "EU" go to /eu/, "US" to /us/). One split, many destinations.
Email each sheet to a different person
Replace Dropbox Upload with Gmail Send Email or Microsoft 365 Send Email. Use the sheet name as the recipient lookup key from a Google Sheet.

PDF4me + Make vs the alternatives

ApproachSetup effortRuns unattendedHandles multi-tab workbooksCost
PDF4me + Make (this blog)Four modules, ~10 minutesYes, on a schedule or triggerYes, any tab countPDF4me free tier plus Make free plan
VBA macro in desktop Excel30-60 minutes of copy-paste plus signingNo, needs desktop Excel open and macros enabledYesFree but manual
Online Excel splitter tool2-minute upload per fileNo, per-file manualYesFree but data leaves your control
Alteryx / Power Query~1 hour setup, requires the platformYes but tied to a workstation licenseYesEnterprise licence

Common questions

How do I split an Excel sheet into multiple worksheets without VBA?

Use a cloud action like PDF4me Excel - Separate Worksheets inside Make, Zapier, n8n, or Power Automate. The action reads the .xlsx bytes, splits every sheet into its own workbook, and returns an array you can loop over. No macros, no VBA, no local Excel install required. The full four-module Make scenario in this walkthrough runs on the free tier and finishes each split in seconds.

How do I split an Excel file into multiple files automatically?

Point a Make Watch Files module at the folder where new workbooks land, chain PDF4me Excel - Separate Worksheets after it, wrap the returned array in a Flow Control Iterator, then upload each item back to a destination folder with Dropbox Upload a File. Now every workbook dropped into that folder is split automatically within the polling interval (15 minutes on the free plan, faster on paid).

Can Make separate Excel sheets into different files on its own?

Make on its own can move, rename, and re-upload Excel files, but it cannot inspect or manipulate what is inside the workbook. You need an Excel-aware action for that. The PDF4me Excel connector provides Excel - Separate Worksheets, which is the exact operation this walkthrough uses. Once installed and connected, Make delegates the split to PDF4me and handles the surrounding orchestration.

Does PDF4me Excel - Separate Worksheets change any data inside the sheets?

No. The action operates on the workbook structure, not the cell values. It reads the sheets, saves each one as an independent .xlsx, and returns those as-is. Formatting, formulas, cell types, merged cells, and named ranges within each sheet are preserved. Cross-sheet formulas that reference other sheets will break in the split files (that is unavoidable because the sheets they pointed to are now in separate workbooks), so add a cell-reference pass afterwards if you need those recalculated.


Troubleshooting

Iterator emits zero items even though the file has multiple sheets

The Array field is mapped to the wrong output. Confirm you selected Splitted Worksheet[] from the PDF4me Excel module, not the single Doc Data output. If the array selector reads Doc Data, delete the mapping and re-add it from the correct source.

Dropbox Upload fails with "The provided file is not a valid file"

Happens when the File field is mapped to a text value instead of the iterator's file bundle. In the File field, pick the Flow Control - Iterator item itself, not the child File Name string. Make will then pass both name and binary content together.

Every output file is named "worksheet.xlsx" with a numeric suffix

The source workbook has sheets with duplicate or blank names. PDF4me falls back to auto-numbering when the sheet name is missing. Open the source .xlsx, give each sheet a distinct name, and re-run the scenario.

Scenario keeps re-splitting the same file on every run

You are still using Download a File (which reads a fixed path every run). Switch to Watch Files for the trigger, or add a Move a File module after Dropbox Upload that shifts the source workbook into a /processed/ folder so the next poll finds nothing new.


Next Steps

The same four-step pattern (download plus split-with-PDF4me plus iterate plus upload) handles any "one file in, many files out" Excel automation you'll ever need to build.