Office Scriptsの基本!Excel自動化で使う関数とコードの書き方
生徒
「最近Office Scriptsというものを聞いたんですが、私はずっとExcel VBAを使ってきました。VBAからOffice Scriptsへ移行するときに、何を知っておくといいんでしょうか?」
先生
「Office ScriptsはTypeScriptという新しい言語を使っていますが、Excel自動化の考え方はVBAと似ている部分も多いですよ。違いを理解しておくとスムーズに移行できます。」
生徒
「言語が違うだけで、操作方法はVBAと同じような感じで書けるんですか?」
先生
「仕組みや書き方に違う部分もありますが、大事なポイントを押さえればすぐに慣れますよ。では、VBAからOffice Scriptsに移行するときに理解しておきたい基本を一緒に見ていきましょう。」
1. Office Scriptsとは?Excel VBAとの違いを知ることから始めよう
Office Scriptsは、Excel Onlineで使えるクラウドベースの自動化ツールです。VBAがExcelアプリに組み込まれた仕組みなのに対し、Office ScriptsはWeb環境で動作するのが大きな特徴です。つまり、Windows版Excelではなく、ブラウザ上のExcelで動くスクリプトになります。
Excel VBAは長い歴史があり、企業の業務自動化にも幅広く使われています。一方のOffice Scriptsは比較的新しく、クラウドサービスとの連携に優れているため、OneDriveやSharePoint、Power Automateなどと組み合わせた自動処理が得意です。
「Excelを自動化する」という目的は同じでも、VBAがローカルPCで動くのに対し、Office Scriptsはインターネット上で動くという違いを理解することが最初のポイントです。
2. 開発環境の違いを理解しよう:VBEとブラウザのコードエディタ
VBAでは、Excelの中にあるVBE(Visual Basic Editor)という開発画面を使ってコードを書きます。一方、Office ScriptsはExcel Onlineの「自動化」タブから開けるコードエディタを使います。
見た目は少し異なりますが、どちらも「コードを書く場所」と考えればOKです。ただしOffice Scriptsはクラウドで動くため、PCに特別なソフトをインストールしなくても、どこからでもスクリプトを作成できます。
Office Scriptsでの基本的なコードの書き方は次のようになります。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
sheet.getRange("A1").setValue("こんにちは");
}
VBAとは書き方が違って見えますが、やっていることは「シートを取得してセルの値を書き込む」という同じ作業です。書く場所だけなく、言語としてのルールが異なる点に注意しながら進めていきましょう。
3. プログラミング言語の違い:VBAとTypeScriptの考え方
VBAはExcel専用の言語で、比較的やわらかい書き方ができます。しかしOffice Scriptsで使うTypeScriptは、より厳密で正確な記述が求められます。
TypeScriptとは、JavaScriptを元にした文法を持ち、パソコンに「これは文字です」「これは数字です」という型(タイプ)を意識させる仕組みがあります。
例えば、VBAでは次のようにざっくり変数を書けます。
Dim msg As String
msg = "こんにちは"
一方Office Scriptsでは、次のように型がはっきり書かれます。
let message: string = "こんにちは";
最初は難しく感じるかもしれませんが、型を指定することでミスを防ぎやすくなり、より安全で安定したコードを書くことができます。VBA経験者にとっては「少しルールが厳しくなった」と感じる程度で、慣れれば大きな強みになります。
4. オブジェクトへのアクセス方法の違い:Range操作の書き方が変わる
Excel自動化でもっともよく使うのがセル(Range)操作です。VBAとOffice Scriptsでは書き方が大きく違うため、移行時に最初に戸惑いやすい部分です。
VBAでは以下のように書きます。
Range("A1").Value = "こんにちは"
Office Scriptsでは次のような形式になります。
sheet.getRange("A1").setValue("こんにちは");
動きは同じですが、メソッド(命令の名前)がしっかり分かれているのがOffice Scriptsの特徴です。「値を設定するなら setValue、取得するなら getValue」というように、動作が明確化されています。
また、Office Scriptsではconstやlet を使い、必要なオブジェクトを変数に入れながら操作していくのが一般的です。
5. 実行環境の違い:ローカルで実行するVBAとクラウドで動くOffice Scripts
VBAはExcelアプリを開いているパソコン上で直接動きます。一方Office Scriptsは、Excel Online(クラウド)の環境で動作します。
これにより、いくつかの重要な違いがあります。
- ファイルパスを直接扱えない(ローカルファイルにはアクセスできない)
- OneDriveやSharePointに保存されたファイルを対象にする
- Power Automateと連携することで自動実行が可能
つまり、Office Scriptsは「クラウド上のExcelに触る」という意識を持つことが大切です。逆に言えば、インターネットがつながっていればどこでも動かせるというメリットがあります。
6. マクロ記録の違いを理解する:VBAよりもシンプルで分かりやすい
VBAには「マクロの記録」という機能があり、操作を記録して自動的にコードを生成してくれます。Office Scriptsにも同様の機能があり、操作を記録することでスクリプトが自動生成されます。
Office Scriptsの記録コードはVBAより整った形で出力されるため、初心者でも読みやすいのが特徴です。「どう書くかわからない」ときは、まず記録してみるという手順はVBAから移行する人にとって強い味方になります。
7. VBAからの移行でつまずきやすいポイントと対策
VBA経験者でも、Office Scriptsでは次のような点で戸惑いやすいです。
- 変数宣言で型を書く必要がある(TypeScriptのルール)
- メソッド名が長く感じる(getRange、getCellなど)
- ローカルのファイル操作ができない
- イベント処理やフォームがVBAほど豊富でない
しかし、次のような対策を知っておくとスムーズに移行できます。
- まずは記録機能でコードの書き方をつかむ
- VBAでやっていた処理をシンプルに書き直す意識を持つ
- クラウド前提の自動化に切り替える
- Power Automateと組み合わせてVBA以上の自動化を目指す
特に、Office Scriptsはクラウドでの繰り返し処理や自動実行が得意です。VBAとは別の方向性の強みがあるため、移行すれば新しい自動化の可能性が広がります。
8. Office Scriptsへの移行で得られるメリット
VBAからOffice Scriptsへ移行することで、次のような大きなメリットがあります。
- クラウドを前提にした自動化ができる
- 複数のメンバーでスクリプトを共有しやすい
- Power Automateと組み合わせて高度な業務自動化が可能
- 環境依存が少なく、どこでも同じ動作をさせやすい
特に「パソコンごとにマクロが動いたり動かなかったりする」というVBAの大きな悩みを解消できるのは大きな魅力です。Office ScriptsはWebベースで動くため、環境による差がほとんどありません。
まとめ
ここまで、VBAからOffice Scriptsへ移行する際に押さえておきたいポイントを丁寧に見てきました。振り返ってみると、両者は「Excelを自動化する」という目的は同じでも、動作環境・書き方・考え方の前提が大きく異なることが分かります。特に、Office Scriptsはクラウドで動作するため、Excel Onlineを中心に据えた新しい業務スタイルに適応しやすい構造になっています。OneDriveやSharePointに保存されたファイルを対象にした処理が得意で、ローカルフォルダの扱いが苦手という性質を理解するだけでも、作れる自動化のイメージが大きく変わります。 VBAではパソコンごとの環境差が問題になることが多く、「同じマクロが別のパソコンでは動かない」という悩みが長年ついて回っていました。一方Office Scriptsは、クラウドで実行されるため、どこからアクセスしても常に一定の動作が保証されます。この安定性は業務自動化において非常に強力で、チーム全体の作業品質を均一に保つことができます。さらに、TypeScriptという言語を採用することによって、型のチェックやコードの予測補完など、現代的なプログラミング環境を活かした開発が可能になっています。 また、VBAの「マクロ記録」と同様にOffice Scriptsにも「アクションの記録」があり、最初はコードを書かなくても自動化の仕組みを理解できるという点は大きな助けになります。コードの記述方法はVBAと異なりますが、目的は同じであり、オブジェクトを取得し、セルやシートを操作する流れの基本は変わりません。書き方こそ違っても、Excel操作の本質は同じなので、VBA経験者が移行しやすい理由となっています。 特に、TypeScriptの書き方やExcelScript APIによるオブジェクト操作のルールに慣れれば、VBAより読みやすく整理されたスクリプトを書くことができます。以下に、VBAとOffice Scriptsの違いを理解しながら書けるシンプルなスクリプト例をまとめました。
Office Scriptsの基本操作をまとめたサンプルコード
function main(workbook: ExcelScript.Workbook) {
// アクティブシートを取得
const sheet = workbook.getActiveWorksheet();
// セルに値を設定
sheet.getRange("A1").setValue("VBAから移行したサンプル");
// 行追加とデータ挿入
const used = sheet.getUsedRange();
const lastRow = used.getRowCount();
sheet.getRange(`A${lastRow + 1}`).setValue("追加データ");
// 別シートの作成
const newSheet = workbook.addWorksheet("まとめデータ");
newSheet.getRange("A1").setValue("Office Scriptsで作成");
newSheet.getRange("B1").setValue(new Date().toLocaleDateString());
// 単純計算(合計値の計算例)
const values = sheet.getRange("B2:B20").getValues();
let total = 0;
values.forEach(v => total += Number(v));
newSheet.getRange("A3").setValue("合計");
newSheet.getRange("B3").setValue(total);
}
このサンプルにあるように、Office Scriptsでは操作がメソッドとして明確に分かれており、Excel内部での動きをそのままコードに置き換える形で記述できます。VBAでは暗黙的に扱われていた要素も、Office Scriptsでは明示的に書くことで、処理の流れが見えやすく管理しやすい点もメリットです。 さらに、Office ScriptsはPower Automateと組み合わせることで、自動実行や定期実行、外部サービスとの連携も容易になります。VBAでは難しかった「クラウドを前提にした自動化」が実現しやすくなるため、移行後の世界ではExcel自動化の可能性が大きく広がります。VBAを長く使ってきた人にとっても、Office Scriptsの思想やAPIに触れることで、新しい自動化の視点を得られるはずです。 総合すると、VBAからOffice Scriptsへの移行は「古いものを捨てる」のではなく、「クラウド時代に適応したExcel自動化の新しい形を身につける」という意味を持っています。どちらが優れているという話ではなく、Excelの使い方や業務スタイルに応じて選択肢が広がったと考えると自然です。Office Scriptsはまだ発展途上の部分もありますが、クラウド基盤の強みを活かした業務自動化の中核として、今後ますます重要度が増していくでしょう。
生徒
「VBAとOffice Scriptsは全然違うように見えて、操作の考え方は似ている部分も多いんですね。移行できる気がしてきました!」
先生
「そうなんです。書き方は違っても、Excelを扱うという本質は同じなので、順番に慣れていけば必ず使いこなせるようになりますよ。」
生徒
「クラウドで動くという点は最初戸惑いましたが、環境差がなくなるのはすごく大きいですね。」
先生
「そのとおりです。VBAではパソコンごとの差が問題になりがちでしたが、Office Scriptsならそこが解消されます。チームで使うとより効果が出ますよ。」
生徒
「Power Automateと組み合わせると、もっと広い自動化ができるというのも面白いです。早速試してみたくなりました!」
先生
「少しずつ触っていけば必ず慣れますよ。両方を理解しておくことで、Excel自動化の選択肢が大きく広がりますからね。」