はじめに
これまでExcelの自動化といえばVBAが主流でしたが、近年はWeb版のMicrosoft Excel の普及により事情が変わってきました。
というのも、Web版ExcelではVBAマクロは動作しないからです。
そこで登場したのが、ブラウザ上で動作する新しい自動化機能 Office Scripts です。
ただし、
VBA → Officeスクリプトは「変換」ではなく「書き直し」です
本記事では、単なる構文変換方法ではなく
Office Scripts への移行方法と考え方について解説します。
VBAとOfficeスクリプトの違い
まずは項目別に比較してみましょう。
| 項目 | VBA | Office Scripts |
|---|---|---|
| 言語 | Visual Basicfor Applications | TypeScript (JavaScriptベース) |
| 実行環境 | ローカルPC (Excelアプリ) | ブラウザ (Web版Excel) |
| 保存先 | ブック内 (.xlsm) | OneDrive (ブックとは独立して保存) |
| インデックス | 1 始まり | 0 始まり |
| 操作方法 | Select/Activate多用 | 直接操作 |
| 非同期処理 | なし | あり |
| API | オブジェクトモデル | Workbook API |
| 外部連携 | 弱い | 強い |
| 主な用途 | 複雑なデスクトップ処理 | Web連携・自動化・クロスプラットフォーム |
変換 (書き直し) の基本パターン
ここからは実際のコードで比較していきます。
セルに値を書き込む
VBA
Range("A1").Value = "Hello"Office Scripts
function main(workbook: ExcelScript.Workbook) {
let sheet = workbook.getActiveWorksheet();
sheet.getRange("A1").setValue("Hello");
}・Workbook から取得する構造です
・setValue() で書き込みます
・ オブジェクト取得が必須です。Office Scriptsは明示的に書きます
ループ処理
VBA
Dim i As Integer
For i = 1 To 10
Cells(i, 1).Value = i
Next iOffice Scripts
for (let i = 0; i < 10; i++) {
sheet.getCell(i, 0).setValue(i + 1);
}👉 超重要ポイント
・インデックスは 0 始まりです
・Cells(1, 1) → getCell(0, 0)
シート操作
VBA
Worksheets("Sheet1").Activate
Range("A1").Select
Selection.Value = 100Office Scripts
let sheet = workbook.getWorksheet("Sheet1");
sheet.getRange("A1").setValue(100);Office Scriptsでは直接操作します。Select / Activate(選択)という概念は不要です。
変換できない・注意が必要な処理
VBAから Office Scripts へすべてが移行できるわけではありません。
❌ UserForm
- Office Scriptsでは使用不可
- UserFormを“そのまま置き換える”ことはできない
- Office Scripts はUI(フォーム)を持たないため
- 別の手段で入力インターフェースを用意する必要がある
❌ FileSystemObject
- ローカルファイル操作は制限あり
- ローカルパスへアクセスすることはできない
- Office Scripts は「クラウドファイル」を扱う
△ API通信
fetch()で対応可能- API通信はVBAよりかなり簡単になる
- VBAでは外部サービスとの連携がかなり大変でした
VBAからOffice Scriptsへ移行する手順
次のような流れが一番スムーズです。
① VBAコードを分解する
- 入力
- 処理
- 出力
② UI依存コードを削除
- Select
- Activate
👉 これを消すだけでかなり整理されます
③ ロジックだけにする
純粋な処理だけ残す
④ Office Scriptsで書き直す
構文変換ではなく、再構築するイメージ
Power Automateとの連携(重要)
Office Scriptsの最大の強みは Power Automate との連携です。
Power Automate経由で他ツールと強力に連携可能:
- 定期実行
- メール送信
- Teams通知
- 他サービス連携
👉 VBAでは難しかった「自動化」が簡単に実現できます
おわりに (まとめ)
- VBAとOffice Scriptsは別物
- 単純な変換はできない
- VBAからの移行は「書き直し」が前提
- Power Automate との連携で「自動化」実現
- クラウド連携は圧倒的に強い
次回は「書き直しのヒント」をチートシートとして紹介したいと思います。
この記事が、少しでも誰かのお役に立てれば幸いです。
当サイトの記事で使用したVBAなどのサンプルをDLできます
この記事のサンプルはありません!
ダウンロードページへは下のカードをクリックすればジャンプできます。
よろしければご利用ください!

