【Web版Excel】VBAをOfficeスクリプトに移行する方法

【Web版Excel】VBAをOfficeスクリプトに移行する方法
目次

はじめに

これまでExcelの自動化といえばVBAが主流でしたが、近年はWeb版のMicrosoft Excel の普及により事情が変わってきました。

というのも、Web版ExcelではVBAマクロは動作しないからです。

そこで登場したのが、ブラウザ上で動作する新しい自動化機能 Office Scripts です。

ただし、

VBA → Officeスクリプトは「変換」ではなく「書き直し」です

本記事では、単なる構文変換方法ではなく
Office Scripts への移行方法と考え方について解説します。

VBAとOfficeスクリプトの違い

まずは項目別に比較してみましょう。

項目VBAOffice Scripts
言語Visual Basicfor ApplicationsTypeScript (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 i

Office 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 = 100

Office 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できます

この記事のサンプルはありません!

ダウンロードページへは下のカードをクリックすればジャンプできます。
よろしければご利用ください!

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

プロフィール画像は愛犬「くるみ」
ブログ名の「くるみこ」kurumico.comはここからつけました。
このブログをとおして、自分の経験から少しでも皆さまのお役に立てる情報が発信できればと思い立ち上げました。VBAは独学ですが、過去にはVBでフリーソフトを作っていた経験と仕事でExcelVBAを酷使している中での気づきなどを発信していきます。

目次