Blog

How to batch-render a month-end reporting pack to PDF

Month-end means a stack of workbooks, exported one at a time by hand. Here's how to render a whole folder to PDF in one pass — with a self-check — instead of babysitting Save as PDF.

Short answer: month-end is a volume problem. You’re not exporting one statement — you’re turning a folder of workbooks (P&L, balance sheet, cash flow, supporting schedules, entity roll-ups) into a clean set of PDFs, and Excel has no built-in “convert this whole folder” button. Your real options are to script a loop, or to point a tool at the folder and let it render every workbook in one pass. The second is faster and, done right, checks its own work along the way.

The three ways to do it

  • By hand, one file at a time. File → Export → Create PDF per workbook. Fine for two files; a lost afternoon for twenty, and every export still carries whatever layout problems the sheet had.
  • A VBA macro. Loop over Dir(), Workbooks.Open each file, call ExportAsFixedFormat xlTypePDF, close, repeat. Real code to write and maintain.
  • PowerShell + Excel COM. New-Object -ComObject Excel.Application, open each file in the folder, ExportAsFixedFormat, quit.

The honest catch with the scripts: they automate the export, not the layout. Each one still does a dumb per-sheet print — the same cut-off columns and split rows you’d get from Save as PDF, just without the clicking. You’ve batched the problem, not fixed it. The full walkthrough (with the macro shape) is in how to batch-convert a folder of Excel files.

Batching with a layout pass and a self-check

CrazySmartPDF’s desktop app is built for exactly the month-end run:

  • Point it at a folder. It finds every .xlsx and .xlsm, opens each one read-only, runs the full smart re-layout and the self-check, and writes one PDF per workbook to your output folder.
  • Watch it go. A live log tracks progress — “[3 / 12] processing…” — then reports success or failure per file.
  • One bad workbook doesn’t sink the run. A file that fails is logged and skipped; the batch keeps going and finishes the rest, so you’re not restarting the whole pack at 6pm because one file was corrupt.
  • Row-atomic layout and full-sheet rendering apply to every file, so a subtotal is never split and — because the engine renders your full used range rather than cutting to a print area — a stale or narrow print area doesn’t quietly drop data across the whole stack, not just the file you happened to eyeball.
  • Each render is self-checked for blank and clipped pages and flagged, which is the boring per-page review nobody does across twenty files. That’s the class of mistake you don’t want reaching a board pack or a set of financial statements.

The honest part

The batch path drives your installed Excel on Windows (2016+) invisibly, so Excel has to be present, and it covers modern workbooks (.xlsx / .xlsm) — batch is a desktop-app feature, not something the browser does. Your originals are never modified — every file is opened read-only. The self-check flags suspect pages for a human to verify; it doesn’t auto-repair them, so the final call stays yours. It’s free to use. The free web converter on the home page runs the same smart engine on our server — your file is converted, then deleted (never stored) — and lays out row-atomic; whole-folder batch and the self-check are what the Windows desktop app adds.