Excel Officeスクリプト入門:記録・実行の基本と最初のコードを編集する方法
はじめに
Office スクリプトは、Excelのマクロと同様に実際の操作を記録して自動化スクリプトを作成できる機能です。
Office スクリプトそのものの概要やVBAとの違いについて詳しく知りたい方は、「【Excel】Officeスクリプトとは? VBAとの違いを比較し、未来の業務効率化に備える」で基本的な知識をご確認ください。
この記事では、操作の記録方法から生成されたコードの基本的な理解、さらに自分のニーズに合わせてコードを編集する方法まで段階的に解説します。
また、多くのユーザーが疑問に感じる「メッセージボックス機能」についても、Office スクリプトでの代替手段を具体的にご紹介します。
概要解説動画
Officeスクリプトの基本:操作の記録と実行
操作を記録する
Office スクリプトが利用可能な環境では、Excelのメニューに「自動化」タブが追加されています。

まず「自動化」タブを開き、「新しいスクリプト」、「レコーディングから作成する」をクリックします。
この機能は、デスクトップ版Excelの「マクロの記録」と同様の仕組みです。

「レコーディングから作成する」をクリックすると、右側に「操作を記録」パネルが表示されます。
この状態で行うシート操作がすべてスクリプトとして記録されます。

実践例:セルへの入力を記録する
サンプルとして、B2セルに「ABC」と入力してみましょう。
- B2セルを選択
- 「ABC」と入力
- Enterキーで確定
入力が完了したら「操作を記録」パネルの「停止」ボタンをクリックします。
これで操作の記録は完了し、スクリプトが自動的に保存されます。

記録を停止すると、スクリプトが保存されます。
コードでない状態でも操作できますが、出来ることは限られます。

記録したスクリプトを実行する
記録を停止すると、スクリプトが保存され、実行可能な状態になります。
動作確認のため、先ほど入力したB2セルの値を一度消去してから「実行」ボタンをクリックしてみてください。
記録時に入力した「ABC」が同じB2セルに自動的に設定されます。
この一連の流れが、Office スクリプトの基本的な記録・実行機能です。

最初のコードを理解し、編集する
コードの確認と解説
記録したスクリプトの内容を確認するには、「編集」ボタンをクリックします。
すると、自動生成されたコードが表示されます。

先ほどの操作で生成されたコードは、基本的に以下のような構造になっています。
function main(workbook: ExcelScript.Workbook) {
let selectedSheet = workbook.getActiveWorksheet();
// Set range B2 on selectedSheet
selectedSheet.getRange("B2").setValue("ABC");
}
コードの意味
getRange("B2"):B2セルを指定setValue("ABC"):指定したセルに「ABC」という値を書き込む
この2つの要素を理解することで、スクリプトの動作を把握できます。
コードの編集
生成されたコードは自由に編集できます。
例えば、対象セルと入力値を変更してみましょう。
編集例
function main(workbook: ExcelScript.Workbook) {
let selectedSheet = workbook.getActiveWorksheet();
selectedSheet.getRange("D4").setValue("123");
}
この変更により、「B2セルにABCを入力」から「D4セルに123を入力」へと処理内容が変わります。
編集後に「実行」をクリックすると、変更した内容でスクリプトが動作し、D4セルに「123」が設定されます。
このように、記録機能で作成したスクリプトをベースに、コードを編集することで様々な処理に応用できます。
【ユーザー課題解決】メッセージボックスの代替機能
Officeスクリプトにメッセージボックス機能はない
VBAに慣れた方が最初に戸惑うポイントとして、Office スクリプトには直接的なメッセージボックス機能(MessageBox)が存在しないことが挙げられます。
ただし、ユーザーに情報を伝える代替手段が複数用意されています。
代替手段1:コンソールへの出力
console.log()メソッドを使用することで、コードエディターの「出力」パネルにメッセージを表示できます。
コード例
function main(workbook: ExcelScript.Workbook) {
let selectedSheet = workbook.getActiveWorksheet();
selectedSheet.getRange("B2").setValue("ABC");
// 処理完了をコンソールに出力
console.log("セルB2にABCを入力しました");
}
この方法は、デバッグ時(スクリプトが正しく動作しているかの確認作業)の動作確認や簡易的な情報表示に効果的です。
出力内容は、コードエディター下部の「出力」タブで確認できます。

代替手段2:セルへの直接書き込み
より視覚的にユーザーに情報を伝えたい場合は、処理完了後に特定のセルにメッセージを書き込む方法が有効です。
コード例
function main(workbook: ExcelScript.Workbook) {
let selectedSheet = workbook.getActiveWorksheet();
// 主要な処理
selectedSheet.getRange("B2").setValue("ABC");
selectedSheet.getRange("B3").setValue("DEF");
selectedSheet.getRange("B4").setValue("GHI");
// 処理完了メッセージをA1セルに表示
selectedSheet.getRange("A1").setValue("処理が完了しました");
}
この方法では、スクリプト実行後にA1セルに「処理が完了しました」というメッセージが表示され、ユーザーは処理の完了を直接シート上で確認できます。

応用例:処理件数の表示
function main(workbook: ExcelScript.Workbook) {
let selectedSheet = workbook.getActiveWorksheet();
let processedCount = 0;
// データ処理(例)
selectedSheet.getRange("B2").setValue("ABC");
processedCount++;
selectedSheet.getRange("B3").setValue("DEF");
processedCount++;
// 処理結果をA1セルに表示
selectedSheet.getRange("A1").setValue(`${processedCount}件のデータを処理しました`);
}
コードの解説
let processedCount = 0;:処理した件数を記録するための「変数」を作成し、初期値を0に設定processedCount++:処理件数を1つずつ増やす記述(processedCount = processedCount + 1の省略形)${processedCount}:変数の値を文字列の中に埋め込む記法(テンプレートリテラル)。この例では「2件のデータを処理しました」と表示される
まとめ
Office スクリプトの記録機能は、プログラミング初心者でも簡単に自動化スクリプトを作成できる強力なツールです。
記録で生成されたコードを理解し、必要に応じて編集することで、より柔軟な自動化が実現できます。
メッセージボックス機能の代替として、console.log()によるコンソール出力やセルへの直接書き込みを活用することで、ユーザーに適切な情報を提供できます。
最初は記録機能に依存しても構いませんが、コードの構造を理解することで、将来的には直接コードを記述する段階へと発展させることが可能です。
これにより、より高度で効率的な業務自動化を実現できるでしょう。
より体系的なOffice スクリプトの学習や、Power Automateとの連携による包括的な業務自動化について詳しく学びたい方は、「ビジネスパーソンのためのOfficeスクリプト入門」で発展的な内容をご確認いただけます。