カテゴリ: Office Scripts 更新日: 2025/12/09

Office Scriptsの基本!Excel自動化で使う関数とコードの書き方

VBAからの移行で知っておくべきポイント
VBAからの移行で知っておくべきポイント

先生と生徒の会話形式で理解しよう

生徒

「最近Office Scriptsというものを聞いたんですが、私はずっとExcel VBAを使ってきました。VBAからOffice Scriptsへ移行するときに、何を知っておくといいんでしょうか?」

先生

「Office ScriptsはTypeScriptという新しい言語を使っていますが、Excel自動化の考え方はVBAと似ている部分も多いですよ。違いを理解しておくとスムーズに移行できます。」

生徒

「言語が違うだけで、操作方法はVBAと同じような感じで書けるんですか?」

先生

「仕組みや書き方に違う部分もありますが、大事なポイントを押さえればすぐに慣れますよ。では、VBAからOffice Scriptsに移行するときに理解しておきたい基本を一緒に見ていきましょう。」

1. Office Scriptsとは?Excel VBAとの違いを知ることから始めよう

1. Office Scriptsとは?Excel VBAとの違いを知ることから始めよう
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とブラウザのコードエディタ

2. 開発環境の違いを理解しよう:VBEとブラウザのコードエディタ
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の考え方

3. プログラミング言語の違い:VBAとTypeScriptの考え方
3. プログラミング言語の違い:VBAとTypeScriptの考え方

VBAはExcel専用の言語で、比較的やわらかい書き方ができます。しかしOffice Scriptsで使うTypeScriptは、より厳密で正確な記述が求められます。

TypeScriptとは、JavaScriptを元にした文法を持ち、パソコンに「これは文字です」「これは数字です」という型(タイプ)を意識させる仕組みがあります。

例えば、VBAでは次のようにざっくり変数を書けます。


Dim msg As String
msg = "こんにちは"

一方Office Scriptsでは、次のように型がはっきり書かれます。


let message: string = "こんにちは";

最初は難しく感じるかもしれませんが、型を指定することでミスを防ぎやすくなり、より安全で安定したコードを書くことができます。VBA経験者にとっては「少しルールが厳しくなった」と感じる程度で、慣れれば大きな強みになります。

4. オブジェクトへのアクセス方法の違い:Range操作の書き方が変わる

4. オブジェクトへのアクセス方法の違い:Range操作の書き方が変わる
4. オブジェクトへのアクセス方法の違い:Range操作の書き方が変わる

Excel自動化でもっともよく使うのがセル(Range)操作です。VBAとOffice Scriptsでは書き方が大きく違うため、移行時に最初に戸惑いやすい部分です。

VBAでは以下のように書きます。


Range("A1").Value = "こんにちは"

Office Scriptsでは次のような形式になります。


sheet.getRange("A1").setValue("こんにちは");

動きは同じですが、メソッド(命令の名前)がしっかり分かれているのがOffice Scriptsの特徴です。「値を設定するなら setValue、取得するなら getValue」というように、動作が明確化されています。

また、Office Scriptsではconstlet を使い、必要なオブジェクトを変数に入れながら操作していくのが一般的です。

5. 実行環境の違い:ローカルで実行するVBAとクラウドで動くOffice Scripts

5. 実行環境の違い:ローカルで実行するVBAとクラウドで動くOffice Scripts
5. 実行環境の違い:ローカルで実行するVBAとクラウドで動くOffice Scripts

VBAはExcelアプリを開いているパソコン上で直接動きます。一方Office Scriptsは、Excel Online(クラウド)の環境で動作します。

これにより、いくつかの重要な違いがあります。

  • ファイルパスを直接扱えない(ローカルファイルにはアクセスできない)
  • OneDriveやSharePointに保存されたファイルを対象にする
  • Power Automateと連携することで自動実行が可能

つまり、Office Scriptsは「クラウド上のExcelに触る」という意識を持つことが大切です。逆に言えば、インターネットがつながっていればどこでも動かせるというメリットがあります。

6. マクロ記録の違いを理解する:VBAよりもシンプルで分かりやすい

6. マクロ記録の違いを理解する:VBAよりもシンプルで分かりやすい
6. マクロ記録の違いを理解する:VBAよりもシンプルで分かりやすい

VBAには「マクロの記録」という機能があり、操作を記録して自動的にコードを生成してくれます。Office Scriptsにも同様の機能があり、操作を記録することでスクリプトが自動生成されます。

Office Scriptsの記録コードはVBAより整った形で出力されるため、初心者でも読みやすいのが特徴です。「どう書くかわからない」ときは、まず記録してみるという手順はVBAから移行する人にとって強い味方になります。

7. VBAからの移行でつまずきやすいポイントと対策

7. VBAからの移行でつまずきやすいポイントと対策
7. VBAからの移行でつまずきやすいポイントと対策

VBA経験者でも、Office Scriptsでは次のような点で戸惑いやすいです。

  • 変数宣言で型を書く必要がある(TypeScriptのルール)
  • メソッド名が長く感じる(getRange、getCellなど)
  • ローカルのファイル操作ができない
  • イベント処理やフォームがVBAほど豊富でない

しかし、次のような対策を知っておくとスムーズに移行できます。

  • まずは記録機能でコードの書き方をつかむ
  • VBAでやっていた処理をシンプルに書き直す意識を持つ
  • クラウド前提の自動化に切り替える
  • Power Automateと組み合わせてVBA以上の自動化を目指す

特に、Office Scriptsはクラウドでの繰り返し処理や自動実行が得意です。VBAとは別の方向性の強みがあるため、移行すれば新しい自動化の可能性が広がります。

8. Office Scriptsへの移行で得られるメリット

8. Office Scriptsへの移行で得られるメリット
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自動化の選択肢が大きく広がりますからね。」

カテゴリの一覧へ
新着記事
New1
Office Scripts
Office Scriptsの基本!Excel自動化で使う関数とコードの書き方
New2
Office Scripts
Office Scriptsの基本!Excel自動化で使う関数とコードの書き方
New3
Excel VBA
VBAクラスモジュールとは?メリットと基本的な使い方を初心者向けに解説
New4
Office Scripts
Office Scriptsの基本!Excel自動化で使う関数とコードの書き方
人気記事
No.1
Java&Spring記事人気No1
Office Scripts
Office Scriptsの基本!Excel自動化で使う関数とコードの書き方
No.2
Java&Spring記事人気No2
Excel VBA
VBAクラスモジュールとは?メリットと基本的な使い方を初心者向けに解説
No.3
Java&Spring記事人気No3
Excel VBA
Excel VBAのプロジェクト構成とモジュール管理!標準・シート・ThisWorkbookの違い
No.4
Java&Spring記事人気No4
Office Scripts
Office Scriptsの基本!Excel自動化で使う関数とコードの書き方
No.5
Java&Spring記事人気No5
Office Scripts
Office Scriptsの基本!Excel自動化で学ぶエラーを防ぐ型チェックの活用方法
No.6
Java&Spring記事人気No6
Office Scripts
Office Scriptsの基本!Excel自動化で使うインターフェイスとスクリプト設計の考え方
No.7
Java&Spring記事人気No7
Office Scripts
Office Scriptsの基本!Excel自動化で使う関数とコードの書き方
No.8
Java&Spring記事人気No8
Excel VBA
Excel VBAプロジェクトを整理する方法!保守しやすいフォルダ・命名規則まとめ