The first thing most people do when they need to make Excel read only is right-click the file > Properties > check 'Read-only'. That’s like putting a sticky note on a vault door — it looks secure until someone copies the file or opens it in Notepad. Excel ignores that flag entirely if the user has write permissions on the folder. Worse? It doesn’t prevent editing — just warns (and users click 'OK' without reading). What makes this elegant is that real read-only control lives inside Excel’s architecture — not Windows’ file system.
Quick Answer
To make Excel read only *in practice*, use one of three reliable methods: (1) Save As > Tools > General Options > set 'Password to modify' (no password = forced read-only), (2) Protect Workbook Structure + mark worksheets as protected, or (3) Share via OneDrive/SharePoint with 'View Only' link permissions. Avoid OS-level read-only attributes — they’re ignored by Excel and bypassed by copy-paste workflows.
All the Methods
| Method | Steps | Best For | Limitations |
|---|---|---|---|
| Password to Modify (Save As) | File > Save As > Tools > General Options > enter password in 'Password to modify' field (leave 'Open' blank) | Distributing reports to clients or auditors who must view but never alter source data | Users can still copy values into new sheets; no audit trail |
| Protect Workbook Structure | Review tab > Protect Workbook > check 'Structure' > set password | Preventing accidental sheet deletion or reordering in shared templates | Doesn’t stop cell editing — combine with worksheet protection |
| SharePoint/OneDrive View-Only Link | Right-click file in SharePoint > Share > Set permission to 'Can view' > copy link | Teams using cloud collaboration where version history and access logs matter | Requires Microsoft 365 license; offline access disabled |
| Worksheet Protection + Locked Cells | Select editable cells > Home > Format Cells > Protection > uncheck 'Locked' > Review > Protect Sheet | Internal templates where only specific input ranges should be editable (e.g., order forms) | Easy to break if password is weak or shared carelessly |
| VBA Auto-Open Read-Only Enforcement | Insert module > paste code that checks ThisWorkbook.ReadOnly = True on open; if false, close with warning | High-security internal reporting dashboards requiring runtime enforcement | Macros disabled by default; requires trusted location setup |
Method 1 Deep Dive
The 'Password to Modify' method is deceptively simple — and wildly underused. Here’s why it works: when you leave the 'Password to open' field blank but fill 'Password to modify', Excel forces read-only mode on launch. Users see 'Read-Only' in the title bar, and any attempt to save triggers a prompt asking for the modification password — which they won’t have.
Try it with this sample sales report. Open Q3_Sales_Report.xlsx (saved from A1:D12 below):
| Sales Rep | Region | Q3 Revenue | Last Updated |
|---|---|---|---|
| Sarah Chen | APAC | $45,200 | 2024-09-12 |
| Marcus Lee | EMEA | $62,850 | 2024-09-11 |
| Aisha Patel | Americas | $51,300 | 2024-09-10 |
| Diego Ruiz | EMEA | $39,175 | 2024-09-09 |
| Yuki Tanaka | APAC | $73,420 | 2024-09-08 |
Now go to File > Save As > Browse. Click the dropdown next to 'Save' and choose Tools > General Options. Enter q3report2024 in 'Password to modify'. Leave 'Password to open' empty. Click OK, then Save. When you reopen the file, notice the title bar says 'Q3_Sales_Report.xlsx [Read-Only]'. Try editing cell C2 — it works! But try saving? Excel blocks it unless you know the password. The beauty here is zero training needed — it just works out of the box.
Surprising tip: If you forget the password, there’s no recovery — but you *can* bypass it by opening the file in LibreOffice Calc, going to File > Properties > Security, and clearing the modification password. So treat this as deterrent-level security, not bank-grade encryption.
Method 2 Deep Dive
Worksheet protection gives you surgical control — but only if you understand how Excel’s 'Locked' property really works. By default, every cell has 'Locked = TRUE' — but that setting does nothing until you protect the sheet. So most people protect the sheet, then wonder why everything is still editable. The fix? Unlock the cells you *want* editable *first*.
Take the Order_Template.xlsx used by Acme Corp’s procurement team (A1:C8):
| Item Code | Description | Qty |
|---|---|---|
| ACM-7821 | Industrial-grade torque wrench | 1 |
| ACM-9450 | Calibration certificate (ISO 17025) | 1 |
| ACM-3319 | Shipping label pack (50) | 2 |
Here’s the sequence that actually works:
1. Select range C2:C8 (the Qty column) → Ctrl+1 → go to Protection tab → uncheck 'Locked' → OK.
2. Select all other cells (A1:C1, A2:B8) → Ctrl+1 → check 'Locked' → OK.
3. Go to Review tab > Protect Sheet. Enter password procure2024. Uncheck everything except 'Select unlocked cells'.
4. Click OK.
Now users can type numbers only in column C — but can’t change item codes or descriptions. And crucially: Alt+R+P (the keyboard shortcut for Protect Sheet) is now blocked unless they know the password. What makes this elegant is how it enforces business logic — not just security. You’re not preventing edits; you’re guiding them to the right place.
Combine this with Protect Workbook Structure (Alt+R+H) to lock sheet tabs — and suddenly your template resists both data corruption and structural chaos.
Cheat Sheet
| Action | Shortcut / Path | Notes |
|---|---|---|
| Set 'Password to modify' | File > Save As > Tools > General Options | Leaving 'Open' blank is critical — enables true read-only mode |
| Unlock specific cells before protecting | Ctrl+1 > Protection tab > uncheck 'Locked' | Must do this BEFORE Protect Sheet — no exceptions |
| Protect workbook structure | Alt+R+H | Prevents adding/deleting/reordering sheets |
| Share as View-Only (OneDrive) | Right-click > Share > 'Specific people' > set to 'Can view' | Link expires in 7 days by default — adjust in Advanced options |
| Force read-only on open (VBA) | ThisWorkbook.Open event: If Not ThisWorkbook.ReadOnly Then ThisWorkbook.Close SaveChanges:=False | Paste into ThisWorkbook module — requires macro security set to Medium |