毎月の集計を VBA のマクロで回している Excel を、Teams や OneDrive に置いてブラウザで開くと、マクロの実行ボタンが見つかりません。テレワークや PC の入れ替えをきっかけに、こうした場面に出会う人が増えています。
この記事では、Web 版の Excel(Excel Online)でマクロが動かない理由と、マクロの処理をクラウドで動かす方法を 4 つ比べます。Samurai App で VBA のマクロを変換して動かす手順と、変換できない書き方、変換せずに Windows の Excel で動かす方法も説明します。
結論
- VBA のマクロは、Web 版の Excel では動きません。 Microsoft の公式の比較表で、Excel on the web の VBA マクロは「いいえ」です。VBA はデスクトップ向けに作られた仕組みです。
- ブラウザやクラウドで同じ処理を動かすには、マクロを別の言語で書き直すか、Windows の Excel を残してそこで動かすかのどちらかになります。
- 書き直し先の代表は、Microsoft の Office スクリプト(TypeScript)と、Google の Apps Script です。どちらも、VBA の書き方によっては自動で変換できません。
- Samurai App は、.xlsm を開くと VBA のマクロを一覧にし、変換できる手続きは TypeScript に変えてブラウザの画面で動かします。 UserForm やファイル操作を使うものは変換せず、Windows の Excel で動かします。
Web 版の Excel でマクロが動かない理由
VBA は Excel のデスクトップ版に組み込まれた言語で、PC のファイルや他のアプリを直接操作できます。この性質がクラウドの仕組みと合わないため、Microsoft は Web 版の自動化に別の仕組み(Office スクリプト)を用意しています。
Microsoft Learn の「Office スクリプトと VBA マクロの違い」では、対応する環境が次のように整理されています。
| Excel on the web | Windows 用 Excel | Excel for Mac | Power Automate | |
|---|---|---|---|---|
| Office スクリプト | はい | はい | はい | はい |
| VBA マクロ | いいえ | はい | はい | いいえ |
同じページには、Office スクリプトを使うには法人向けまたは教育機関向けのライセンスが必要なこと、ブックを開いたときなどの Excel のイベントでは動かず、手で起動するか Power Automate から呼ぶ必要があることも書かれています。
マクロの処理をクラウドで動かす 4 つの方法
| 方法 | 書き直し | 定期実行 | 向くとき |
|---|---|---|---|
| Office スクリプトに書き直す | 必要(TypeScript) | Power Automate から | Microsoft 365 の法人向けライセンスがある |
| Google スプレッドシートと Apps Script に移す | 変換ツールあり。一部は手で修正する | Apps Script のトリガー | Google Workspace にまとめる |
| Windows の Excel を残す | 不要 | RPA や Windows のタスクで | VBA が UserForm や他のアプリの操作に依存している |
| VBA を変換して動かすサービスを使う | 変換できる範囲は不要 | サービスによる | 書き直す人手がない |
Office スクリプトに書き直す
Office スクリプトは TypeScript で書く、Excel の自動化の仕組みです。操作を記録して作ることもできます。Power Automate のフローから呼べば、Excel を開かずに定期的に動かせます。VBA からの自動変換の仕組みは、Microsoft の比較ページには書かれていないので、基本は書き直しになります。
Google スプレッドシートと Apps Script に移す
Google は、Excel のファイルの VBA を Apps Script に変換する「Macro Converter」のアドオンを公開しています。ただし、一部の VBA のトリガーは自動では変換されず、CreateObject や Shell.execute などを使うマクロは、変換そのものを考え直すよう案内されています。ファイルの形式も Google スプレッドシートに変わります。
Windows の Excel を残す
UserForm(入力画面)、他のアプリの操作、社内のフォルダのファイル操作を使うマクロは、書き直すと別物になります。こうしたマクロは Windows の PC か仮想マシンに Excel を残し、そこで動かすのが現実的です。
移す前にマクロを棚卸しする
どの方法を選ぶにしても、最初に今あるマクロを一覧にします。移せるかどうかは、マクロが何に触れているかで決まるためです。
| 確認すること | 移しやすい | 移しにくい |
|---|---|---|
| 触れる範囲 | 開いているブックのセルだけ | 別のブック、フォルダのファイル、他のアプリ |
| 起動の方法 | ボタンや手で実行 | ブックを開いたとき、セルを変えたときなどのイベント |
| 画面 | 画面を出さない | UserForm で入力画面を出す |
| 外部との接続 | なし | データベースやメールの送信 |
一覧には、マクロの名前、何をするか、誰がいつ使うか、上の 4 つの答えを書きます。移しにくい欄に当てはまるマクロが多いブックは、無理に書き直さず Windows の Excel に残すほうが早いこともあります。
Samurai App で VBA を動かす手順
Samurai App は、.xlsx・.xlsm・.csv・.tsv を、Excel が入っていない PC でもブラウザの表計算の画面で開けます。.xlsm は .xlsm のまま保存され、VBA のマクロは 1 バイトも変えずに残るので、後で Excel で開けばそのまま動きます。
1. .xlsm を開いて「マクロ」を見る
ファイルを「ファイル」に置くか会話に添えて開き、シートの上の「マクロ」を開きます。「VBA(Excel のマクロ)」の下に、ブックの VBA のマクロが並びます。並ぶのは、標準モジュールにある、引数のない Public の Sub だけです。
2. 変換後のコードを確認して実行する
変換できるマクロには「実行」のボタンが付きます。初めて実行するときは、元の VBA と変換後の TypeScript が並んで表示されるので、確認してから実行します。変換後のコードが変わらない限り、次からは確認されません。
実行の結果はブラウザの画面のシートに反映されます。シートの「元に戻す」(⌘Z)で、1 回の実行をまとめて取り消せます。マクロが別のシートを選ぶ書き方(Sheets("…").Select)なら、実行の後に画面もそのシートに切り替わります。
3. AI に実行を頼む
会話でも、AI エージェントにマクロの実行を頼めます。マクロの中身を承認のカードで 1 回確認すると、エージェントが実行します。「常に許可」はそのマクロにだけ適用され、中身が変わるとまた確認されます。
添付の売上集計.xlsm の「月次集計」マクロを実行して、集計シートの合計を教えて
4. 新しい処理は TypeScript のマクロで書く
「マクロ」の「編集」から「新しいマクロ」を押すと、Office スクリプトと同じ書き方(function main(workbook: ExcelScript.Workbook) { … })でマクロを記述できます。保存するとブックの中に入り、ファイルと一緒に動きます。Excel はこのマクロをファイルに残しますが、実行はしません。
変換できないマクロは Windows の Excel で動かす
次の書き方を使う VBA は変換されず、ボタンの代わりに、該当した行と理由が表示されます。
- UserForm、ActiveX、
Declare、Shell - ファイルの読み書き
With、For Each、GoTo、エラー処理(On Errorなど)
大きすぎるマクロも、その旨が表示されて変換されません。これらは Windows の Excel で動かします。Windows の PC で Samurai App の CLI(samuraiapp)を常駐させておけば、その PC の Excel を AI エージェントが操作して、ブックのマクロを実行できます。
詳しくは Excel の機能のページ で紹介しています。
限界と向かない場面
- 1 回の実行は 10 秒、セルの書き込みは 5,000 回までです。上限に達したときや途中で失敗したときは、シートは何も変わりません。何十万行を 1 行ずつ書き換えるようなマクロは、この画面には向きません。
- マクロはインターネットや他のファイルに触れません。 別のブックを開いて値を集める、フォルダの中のファイルを順に読み込む、といった処理は変換できません。複数のファイルの集計は、ファイルを会話に添えて AI に頼む形になります。
- ブラウザの画面で開けるのは 25MB までのブックです。それより大きいファイルは、会話で AI に頼むと、クラウドの実行環境で読み込んで集計や加工をします。
- 1 冊に置けるマクロは 50 個まで、1 つのマクロのソースは 64KB までです。
- 画面の値が Excel と違うことがあります。 この画面にない関数や、
INDIRECT・OFFSETを使う式があると、シートの上に注意が出ます。最終的な値は Excel で開いて確認してください。 - 同じブックを複数の人で同時に編集する仕組みはありません。
よくある質問
Excel Online でマクロを有効にする設定はありますか
ありません。Microsoft の比較表で、Excel on the web は VBA マクロに対応していません。Web 版で自動化するなら Office スクリプトを使います。
.xlsm を Web 版や他のツールで開くと、マクロは消えますか
ツールによって違います。Samurai App の画面では、.xlsm は .xlsm のまま保存し、VBA には手を加えません。他のツールで開いて保存する場合は、そのツールの説明を確認してください。
マクロを定期的に自動で動かせますか
Office スクリプトなら Power Automate のフローから、Apps Script ならトリガーから動かせます。VBA のままなら、Windows の Excel を動かす仕組み(RPA やタスクの実行)が必要です。
VBA を覚えている人が社内にいなくなりました。どうすればよいですか
まず、どのブックのどのマクロが何をしているかをまとめます。Samurai App で開けば、変換できるマクロは元の VBA と変換後のコードを並べて読めるので、処理の中身を確認する手がかりになります。
出典
- Office スクリプトと VBA マクロの違い(Microsoft Learn)
- VBA マクロを Apps Script に変換する(Google for Developers)
- ファイルの編集(Excel と CSV)(Samurai App ドキュメント)
2026 年 11 月 9 日時点で、各社の公式ドキュメントと Samurai App のドキュメントで確認したものです。