メインコンテンツへスキップ

📘 Office Scriptsの概要

📌 はじめに

Office Scriptsは、Excelの操作をスクリプトとして記述・実行するための自動化機能です。

Excelで繰り返し行っている操作を自動化できる点ではVBA(マクロ)と似ていますが、Office ScriptsはMicrosoft 365とクラウド環境を前提として設計されており、スクリプトの記述にはTypeScriptをベースとした言語を使用します。

Excelの「自動化」タブから、操作の記録、スクリプトの作成・編集、実行などを行えます。

Office ScriptsとPower Automateは別の機能です。Office ScriptsがExcel内部の処理を担当し、Power Automateがいつ・何をきっかけに処理を実行するかを担当すると考えると整理しやすくなります。

🔍 Office Scriptsとは

Office Scriptsは、Excel上で行う一連の処理をプログラムとして保存し、再実行できる機能です。

たとえば、次のような処理を自動化できます。

  • データの入力・削除
  • セルや範囲の取得
  • 書式の設定
  • 表(テーブル)の操作
  • ワークシートの追加・削除
  • 数式の設定
  • 並べ替えやフィルター
  • グラフの作成・変更
  • ピボットテーブルの操作
  • 大量データに対する定型処理

基本的な考え方は、

Excelの操作 → Office Scriptsとして記述 → 必要なときに再実行

です。

🧩 Office Scriptsの構成

Office Scriptsでは、Excelのブックをオブジェクトとして操作します。

概念的には次のような階層になっています。

Workbook(ブック)Worksheet(ワークシート)Range(セル範囲)値・数式・書式など

たとえば、「Sheet1のA1セルに文字列を書き込む」という処理は次のようになります。

function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getWorksheet("Sheet1");
  sheet.getRange("A1").setValue("Hello");
}

Office Scriptsでは、原則としてmain関数が処理の入口になります。

workbookには、スクリプトを実行しているExcelブックが渡されます。

TypeScriptを使用しますが、Excel操作用のExcelScript APIが用意されているため、通常のTypeScriptだけでExcelファイルを直接操作するわけではありません。

🎥 操作を記録してスクリプトを作る

Office Scriptsには、Excel上で行った操作を記録してスクリプトを生成する機能があります。

Excelの「自動化」タブから操作の記録を開始し、

  1. セルを編集する
  2. 書式を変更する
  3. テーブルを操作する
  4. 並べ替える

などの操作を行うと、それに対応するOffice Scriptsのコードが生成されます。

そのため、最初からすべてのAPIを覚える必要はありません。

操作を記録する → 生成されたコードを読む → 必要な部分を修正する

という使い方ができます。

Office Scriptsを覚える場合は、まず操作を記録して生成されたコードを見る方法が有効です。Excelの操作とExcelScript APIの対応関係を確認できます。

⚙️ VBAとの違い

Office ScriptsとVBAはどちらもExcelを自動化できますが、設計思想がかなり異なります。

項目 Office Scripts VBA
主な用途 Microsoft 365環境でのExcel自動化 デスクトップOfficeの自動化
言語 TypeScriptベース Visual Basic for Applications
主な実行環境 Excel for the web、対応するデスクトップ版Excel 主にデスクトップ版Excel
保存 Microsoft 365上のスクリプト Excelファイルや個人用マクロブックなど
マクロ有効ブック 不要 通常は.xlsmなどが必要
Power Automate連携 強い 標準的な連携手段ではない
Windows API等の利用 不可 Windows版では可能
イベント処理 VBAより限定的 Workbook_Open等が利用可能
ローカルPC操作 基本的に不向き 得意

Office Scriptsは、VBAの完全な後継というよりも、クラウド環境を前提にした別系統のExcel自動化機能と考える方が適切です。

VBAで可能な処理が、そのままOffice Scriptsでも可能とは限りません。特にWindows API、ローカルファイル、他のデスクトップアプリケーションとの連携などはVBAの方が強力です。

☁️ Power Automateとの違い

Office ScriptsとPower Automateは役割が異なります。

Office Scripts

Excelの中で何をするかを記述します。

たとえば、

  • データを整形する
  • 不要な行を削除する
  • 数式を入力する
  • 書式を整える

といった処理です。

Power Automate

いつ、何をきっかけに処理するかを構成します。

たとえば、

毎朝9時SharePoint上のExcelファイルを取得Office Scriptを実行結果をメールで送信

というワークフローを構築できます。

つまり、

Power Automate → Office Scripts → Excel

という組み合わせが可能です。

定型的なExcel処理をOffice Scriptsにまとめ、その起動や前後の処理をPower Automateに担当させる構成は、Microsoft 365環境における代表的な自動化パターンです。

🖥️ Office Scriptsの実行方法

Office Scriptsには複数の実行方法があります。

Excelから手動実行

Excelの「自動化」タブから保存済みスクリプトを選択して実行します。

単純な定型作業であれば、この方法だけでも十分です。

Excel上のボタンから実行

スクリプトに対応するボタンをワークシート上に配置し、利用者がボタンを押して実行する方法もあります。

「コードを意識せず、決められた処理だけを実行してもらう」といった用途に向いています。

Power Automateから実行

Power AutomateのフローからOffice Scriptを呼び出せます。

これにより、人間がExcelを開いていない状態でもワークフローの一部として処理できます。

📥 引数と戻り値

Office Scriptsのmain関数には引数を追加できます。

function main(
  workbook: ExcelScript.Workbook,
  message: string
) {
  workbook.getActiveWorksheet()
    .getRange("A1")
    .setValue(message);
}

この仕組みを利用すると、Power Automateなどから値を渡して処理できます。

また、main関数から値を返すこともできます。

function main(workbook: ExcelScript.Workbook): string {
  return workbook.getActiveWorksheet().getName();
}

そのため、

Power Automateからデータを渡すOffice ScriptsでExcelを処理する処理結果をPower Automateへ返す

という構成が可能です。

🚀 Office Scriptsが向いている用途

Office Scriptsは特に次のような用途に向いています。

  • Microsoft 365環境でExcelを利用している
  • SharePointやOneDrive上のExcelを処理したい
  • 同じExcel操作を繰り返している
  • VBAマクロを含むファイルを配布したくない
  • 複数人で自動化処理を利用したい
  • Power Automateと組み合わせたい
  • TypeScriptやJavaScriptに慣れている

ソフトウェア開発経験がある場合、VBAよりもOffice Scriptsのコード体系の方が馴染みやすい場合があります。

🛠️ VBAの方が向いている用途

一方、次のような用途ではVBAが適している場合があります。

  • ローカルPC上のファイルを大量に操作する
  • Windows固有の機能を利用する
  • Excel以外のデスクトップ版Officeを細かく操作する
  • Workbook_Openなどのイベント処理を多用する
  • 既存のVBA資産が大量に存在する
  • オフライン環境で動作させる必要がある

Office Scriptsが登場したからといって、VBAが単純に不要になったわけではありません。

クラウド中心ならOffice Scripts、Windowsデスクトップ中心ならVBA

というのが大まかな使い分けになります。

🔐 セキュリティ上の特徴

従来のVBAでは、Excelファイル自体にマクロを含めることができます。

このため、外部から受け取ったOfficeファイルに悪意のあるVBAマクロが含まれていることが、長年セキュリティ上の問題になってきました。

Office Scriptsでは、VBAとは異なるクラウド中心の実行・保存モデルが採用されています。

また、Windows APIや任意のローカルプログラムを直接実行するための仕組みではありません。

Office ScriptsはVBAより実行可能な範囲が制限されていますが、その制約はMicrosoft 365環境で自動化を安全に運用しやすくする要素でもあります。

Office Scriptsであっても、スクリプトによってセルの削除や上書きなどは可能です。他人が作成したスクリプトや内容を理解していないスクリプトを実行する場合は、処理内容を確認してください。

🧠 Office Scriptsを理解するための位置づけ

Microsoft 365のExcel自動化を整理すると、次のように考えると分かりやすくなります。

技術 主な役割
Excel関数 セルの計算
Power Query データの取得・変換
Office Scripts Excel操作の自動化
Power Automate サービス間のワークフロー自動化
VBA デスクトップOfficeの高度な自動化

特にOffice ScriptsとPower Automateは、

Office Scripts = 処理

Power Automate = オーケストレーション

という役割分担で考えることができます。

📚 まとめ

Office Scriptsは、Microsoft 365時代のExcel自動化機能です。

TypeScriptベースのコードとExcelScript APIを利用して、Excel上のさまざまな操作を自動化できます。

特に重要なのは、Office Scriptsを単純な「新しいVBA」と考えないことです。

VBAがWindowsデスクトップ上で非常に広い範囲を操作できる自動化環境であるのに対して、Office ScriptsはMicrosoft 365とクラウド環境を前提として設計されています。

そのため、用途に応じて、

Excel内部の定型処理 → Office Scripts

データ取得・変換 → Power Query

複数サービスをまたぐ処理 → Power Automate

Windows・デスクトップOfficeまで含む高度な処理 → VBA

と使い分けると、それぞれの特徴を活かしやすくなります。

必要なら次に、BookStackの続きとして「Office Scripts入門:Range操作・配列・テーブル操作」を実際のコード中心でまとめられます。