「マクロ入りのExcelファイルをTeamsにアップしたけど、マクロは動くの?」
「なぜ自動保存がオフになってしまうの?」
本記事ではそんな疑問にまとめて答えます。
.xlsmと.xlsxそれぞれをSharePoint Online(Teams)にアップロードしたときの挙動の違いを、具体的な項目ごとに整理しました。
1. 機能比較表:一目でわかる .xlsx と .xlsm の違い
まずは全体像を比較表で把握しましょう。各項目の詳細は後続のセクションで解説します。
◯ = 可能・問題なし、
△ = 条件付き可能・一部制限あり
x = 不可・非対応
― = 対象外
| カテゴリ | 比較項目 | .xlsx(マクロなし) | .xlsm(マクロあり) |
|---|---|---|---|
| 基本操作 | 自動保存(AutoSave) | ◯ | △マクロの内容によっては無効化される。BeforeSave / AfterSave イベントを含む場合は特に注意 |
| 共同編集(同時編集) | ◯ | △マクロ内容により競合が起きやすい | |
| バージョン履歴の管理 | ◯ | ◯ | |
| マクロ・ VBA | マクロ(VBA)の保存 | x 保存時にマクロが削除される | ◯ |
| Web版Excel/ブラウザでのマクロ実行 | ― | x ファイルは開けるがマクロは動作しない | |
| デスクトップ版Excelでのマクロ実行 | ― | △セキュリティ設定・組織ポリシーによる | |
| Power Automateからのマクロ実行 | ― | x Office スクリプト(JavaScript)のみ対応 | |
| Teams・ Web表示 | ブラウザ/Teamsでの表示・編集 | ◯ | △複雑なVBAプロジェクトは開けないことも |
| ActiveX/フォームコントロール(Web) | △一部動作しないものがある | x Web版では非対応 | |
| セキュリティ・ 互換性 | マクロによるセキュリティリスク | ◯マクロを含まないため低リスク | △インターネット由来はマクロがブロックされる場合あり |
| 他ツール(Googleスプレッドシート等)との互換性 | ◯ | x VBAマクロは他ツールで動作しない |
以降では、各項目について背景や理由を含めてくわしく解説します。
2. 自動保存(AutoSave)はどちらも使える?
「.xlsmをTeamsにアップしたら自動保存ができなくなった」という声は非常に多く寄せられます。これは実際に起こる現象であり、.xlsm の自動保存はマクロの内容によって無効化されることがあります。
.xlsx の自動保存
.xlsx はSharePoint Online(Teams)上に保存されていれば、自動保存が安定して有効になります。Microsoft 365サブスクリプションがあれば、編集内容はほぼリアルタイムでクラウドに保存されます。
.xlsm の自動保存:マクロの内容に左右される
.xlsm も仕組み上はSharePoint Online上で自動保存が有効になりますが、VBAマクロの内容によって自動保存が無効化・中断されるケースが多くあります。
具体的には、Excelには保存の直前・直後に自動で実行される BeforeSave イベントと AfterSave イベントというVBAの仕組みがあります。自動保存が有効になると、これらのイベントが定期的・自動的に発火するようになります。その結果、以下のような問題が引き起こされます。
BeforeSaveやAfterSaveに重い処理が書かれていると、自動保存のたびにExcelが固まるBeforeSaveでキャンセル処理(Cancel = True)をしているマクロがあると、保存が繰り返しブロックされ続けるAfterSaveでセルへの書き込みなどを行っていると、保存のたびに「変更あり」状態になり無限ループに近い状態になる- マクロ自体が
AutoSaveOn = Falseを実行して意図的に自動保存をオフにしている
マクロを含む .xlsm ファイルは、SharePoint Online上でも自動保存が正常に機能しないケースが多く報告されています。特に BeforeSave / AfterSave イベントを使っているファイルは自動保存が無効化されやすいため、手動保存(Ctrl+S)を習慣にする運用を推奨します。
自動保存がオフになるその他の原因
フォーマットやマクロ以外にも、以下の状況では .xlsx でも自動保存は有効になりません。
- ファイルがローカルドライブやオンプレミスのネットワーク共有フォルダに保存されている
- Microsoft 365のサブスクリプションではなく、買い切り版のOfficeを使用している
- SharePoint オンプレミス(クラウドでないSharePoint)を使用している
- パスワード保護や制限付きアクセスがファイルに設定されている
3. 共同編集(同時編集)の挙動の違い
Teams(SPO)上のExcelファイルは、複数人が同時に開いて編集する「共同編集」が可能です。ただし、.xlsm ではいくつか注意が必要です。
.xlsx の共同編集
.xlsx は共同編集が安定して動作します。複数人が同じファイルを開くと自動的に共同編集モードになり、リアルタイムで互いの変更が反映されます。
.xlsm の共同編集
.xlsm も共同編集の対象フォーマットに含まれており、原則として共同編集は可能です。 ただし、マクロの内容によっては以下のような問題が発生することがあります。
複数人が同時に .xlsm ファイルを編集しようとすると、「読み取り専用」扱いになったり、編集の競合が発生しやすくなることがあります。特にマクロが多用されたファイルでは不安定になる場合があるため、運用ルールを設けることをおすすめします。
共同編集を前提とした運用をする場合、マクロ実行用のファイル(.xlsm)と、データ入力・共同編集用のファイル(.xlsx)を分けて管理する方法が安定した運用につながります。
4. マクロはTeamsにアップすると動かなくなるの?
これが最も多い疑問ではないでしょうか。結論から言うと、「場所によっては動かない」が正確な答えです。開く環境によってマクロの挙動が大きく変わります。
ブラウザ(Teams上・Web版Excel)では動かない
TeamsのタブやSharePointのサイト上でExcelファイルを開く場合、背後では「Web版Excel(Excel for the web)」が動作しています。このWeb版Excelでは、.xlsmファイルを開いて表示・編集することはできますが、VBAマクロは実行されません。
これはMicrosoftの仕様です。ブラウザ上でのマクロ実行はセキュリティ上の理由からサポートされていません。ファイル自体は開けるため、通常の表データの閲覧や編集は可能です。
デスクトップ版Excelで開けば動く(条件あり)
Teamsからファイルを「アプリで開く(Excelで開く)」を選ぶと、インストール済みのデスクトップ版Excelが起動します。この場合はVBAマクロを実行できますが、セキュリティの警告が表示される場合があります。
これはMicrosoftが2022年以降に強化したセキュリティポリシーによるもので、インターネットやクラウドから取得したファイルのマクロは、既定でブロックされるようになっています。「コンテンツの有効化」をクリックするか、組織のIT管理者が信頼できる場所として設定することで実行可能になります。
Power Automateからは実行不可
SharePoint上の .xlsm ファイルのマクロを Power Automate(フロー)から自動実行したいというニーズもありますが、Power AutomateからVBAマクロを実行することはできません。 Power AutomateでExcelを操作する場合は、VBAではなく「Office スクリプト(JavaScript)」を使う必要があります。
5. ブラウザ・Teamsアプリ上での表示・編集の違い
.xlsx の場合
Teamsのタブやブラウザ上でそのまま開いて編集できます。Web版Excelの機能範囲内であれば、ほぼすべての操作をブラウザ上で完結できます。
.xlsm の場合
基本的な表示・編集はブラウザ上でも可能です。ただし、ファイルにVBAプロジェクト(マクロモジュール)が含まれていると、場合によってはブラウザで開けないエラーが表示されることがあります。その際は「Excelで開く」でデスクトップ版に切り替える必要があります。
また、ActiveXコントロールやフォームコントロールをボタンとして配置しているファイルは、Web版Excelでは正しく表示・動作しないケースがあるため注意が必要です。
6. セキュリティと互換性の注意点
マクロによるセキュリティリスク
.xlsm ファイルはVBAコードを含むため、信頼できないファイルを開いた場合に悪意あるコードが実行されるリスクがあります。Microsoftはこれに対応するため、インターネット由来のファイルのマクロを既定でブロックするよう設定を強化しています。
Teams(SPO)にアップされたファイルは組織内のファイルとして扱われることが多いですが、外部から受け取った .xlsm ファイルを無条件に有効化することは避けましょう。
他ツールとの互換性
.xlsx は Google スプレッドシートや LibreOffice など、Microsoft以外のツールでも広く対応しており、互換性が高いフォーマットです。一方 .xlsm のVBAマクロは、他のツールでは動作しません。外部パートナーとのファイルやり取りには .xlsx が無難です。
7. どちらを使うべきか?場面別の判断基準
最後に、実際の業務シーンでどちらを選ぶべきかをまとめます。
.xlsx を選ぶべき場面
以下に当てはまる場合は、.xlsx を選ぶのが無難です。
- 複数人でリアルタイムに共同編集したい
- ブラウザやスマホからも頻繁に開く
- 外部パートナーとファイルをやり取りする
- マクロは不要で、データ管理や集計が主な目的
.xlsm を選ぶべき場面
以下に当てはまる場合は、.xlsm が必要です。ただし、後述の制約を十分に理解したうえで運用設計をしてください。
- VBAマクロによる業務自動化が必要
- 必ずデスクトップ版Excelで開いて使う運用ができる
- マクロを実行するメンバーが限定されている
- 入力フォームや複雑な自動計算処理がある
- 自動保存に頼らず、手動保存(Ctrl+S)で運用できる
Teams運用でのおすすめ構成
マクロを含む業務ファイルをTeamsで管理する場合、「マクロ実行用ファイル(.xlsm)」と「データ共有・入力用ファイル(.xlsx)」を分離する構成が、安定かつ安全です。
.xlsm はデスクトップ版Excelで開いてマクロを実行する運用に限定し、チームで共同入力するデータは .xlsx で管理することで、共同編集の安定性とマクロの活用を両立できます。
まとめ:.xlsm をTeamsで使うなら「制約ありき」で設計する
.xlsm と .xlsx はどちらもSharePoint Online(Teams)上で管理できますが、できることには明確な差があります。特に「自動保存」と「マクロの実行環境」については、事前に正しく理解しておかないと、運用開始後にトラブルが起きやすい箇所です。
.xlsx は自動保存・共同編集・ブラウザでの編集がすべて安定して動作します。Teams上での日常的なデータ管理や集計であれば、.xlsx に統一するのが最もシンプルで安全な選択です。
一方 .xlsm は、VBAマクロを保存・利用できる唯一のフォーマットですが、Teams(SPO)上での運用には以下の制約がともないます。
- 自動保存:マクロの内容(特にBeforeSave / AfterSaveイベント)によって無効化されることがある。手動保存(Ctrl+S)を前提に運用する
- マクロの実行:ブラウザ・Web版Excelでは動作しない。必ずデスクトップ版Excelで開く必要がある
- 共同編集:フォーマット上は対応しているが、マクロの内容によって競合や読み取り専用になるケースがある
- Power Automate:VBAマクロをフローから実行することはできない。自動化にはOffice スクリプトへの移行が必要
マクロを手放せない業務でTeamsを活用する場合は、「マクロ実行専用の .xlsm」と「チームで共同編集する .xlsx」をファイルとして分離する構成が現実的です。.xlsm はあくまでデスクトップ版Excelで使うツールとして位置づけ、Teamsはファイルの保管・共有場所として割り切って使うと、余計なトラブルを避けられます。