忍者ブログ
バイオインフォマティックス技術者試験、情報処理試験など、IT系の試験を基礎から勉強します。また、Javaなどプログラミングを勉強します。

【Officeスクリプト】VBAやGASとは何が違う?メリットと賢い使い分けを徹底比較!

Excelの業務効率化といえば「VBA(マクロ)」がおなじみですが、最近Excelの画面に「自動化」タブという新しいボタンが登場したのをご存知でしょうか?

これは「Officeスクリプト」という、Microsoftが提供する次世代の自動化機能です。「これまでのVBAと何が違うの?」「GoogleスプレッドシートのGASと同じなの?」という疑問を、メリットや比較と合わせて分かりやすく解説します!

0. 結論:VBAとOfficeスクリプトの違い

まずは、VBAとOfficeスクリプトの主な違いを一覧表で見てみましょう。

比較項目従来のExcel VBA新しいOfficeスクリプト
プログラミング言語 VBA(Visual Basic for Applications) TypeScript(JavaScriptベース)
動く場所(環境) パソコン(デスクトップ版Excelのみ) クラウド & パソコン(Web版・スマホ版・デスクトップ版)
ファイルの形式 マクロ有効ブック(.xlsmなど)が必要 通常のブック(.xlsx)のままでOK(※スクリプトはクラウドに保存)
他のアプリとの連携 PC内の操作や外部ファイル連携が得意 TeamsやOutlook、Power Automate等との連携が超得意

1. ちなみに、Googleスプレッドシートの「GAS」とは同じもの?

Googleスプレッドシートを自動化する「Google Apps Script(GAS)」を知っている方なら、「OfficeスクリプトとGASって考え方は同じなの?」と思うかもしれません。

結論から言うと、根本的な考え方や仕組みは「ほぼ同じ」です!

  • 兄弟のような関係のプログラミング言語
    GASは「JavaScript」、OfficeスクリプトはJavaScriptを発展させた「TypeScript」という言語を使います。基本的な文法(for文によるループやif文による条件分岐など)は全く同じなので、片方を覚えればもう片方もすぐに理解できます。
  • クラウドで動くマクロという共通点
    どちらもプログラムコードはパソコン内ではなくクラウド上に保存され、サーバー側で実行されます。そのため、ファイルを開いていなくても外部から自動実行できる仕組み(OfficeスクリプトならPower Automate、GASならトリガー設定)を持っている点もそっくりです。

まさに、「GoogleのGASに対抗して、Microsoftが満を持して作ったExcel版のGAS」がOfficeスクリプトだとイメージすると非常に分かりやすいです!

2. Officeスクリプトの「3つの大きなメリット」

VBAと比べたとき、Officeスクリプトには実務をガラリと変える強力なメリットが3つあります。

① クラウド(Web版Excel)やスマホでも動く!

VBAはパソコンにインストールされたExcelでしか動きませんでしたが、OfficeスクリプトはWebブラウザ上で開く「Web版Excel」でも、スマホのExcelアプリでも実行できます。Mac環境でもWindowsと全く同じように動作するのも嬉しいポイントです。

② ファイルの拡張子を「.xlsm」に変えなくていい!

VBAを使う時は、ファイルを「マクロ有効ブック(.xlsm)」という特殊な形式で保存する必要があり、セキュリティの観点から社内で嫌がられることもありました。Officeスクリプトは、プログラムコードがファイルの中ではなく「使う人のクラウド(OneDrive等)」に保存されるため、通常の「.xlsx」ファイルのままで自動化が可能です。

③ Power Automateと連携して「全自動化」ができる!

これが最大の強みです。Microsoftの自動化ツール「Power Automate」と組み合わせることで、「毎日朝9時に、指定のExcelのスクリプトを実行してデータを集計し、結果をTeamsやOutlookで自動送信する」といった、Excelを開くことすらしない完全自動化が簡単に作れます。

3. 実務での賢い使い分けルート

「じゃあ、全部Officeスクリプトにすればいいの?」というと、実はそうではありません。それぞれの「得意分野」に合わせて、以下のように使い分けるのがベストです。

  • Officeスクリプトが向いているケース
    ・Web版のExcel(Teams上のExcelなど)で共同編集しながらマクロを動かしたい時
    ・定期的な集計をPower Automateで夜間に勝手に終わらせたい時
    ・セキュリティの関係でマクロ有効ブック(.xlsm)が使えない職場環境の時
  • VBAが向いているケース
    ・「パソコン内の特定のフォルダにある複数のファイルを読み込む」ようなローカルPC内の操作をしたい時
    ・ユーザーフォーム(オリジナルの入力画面)をカチッと作り込みたい時
    ・長年蓄積された社内の巨大なVBA資産をそのまま活かしたい時

ワンポイント・アドバイス

これから学ぶならどっち?
もしあなたが「これからプログラミングを学んで、クラウド時代の自動化をマスターしたい!」と考えているなら、Officeスクリプトが断然おすすめです。
OfficeスクリプトのベースであるTypeScript(JavaScript)は、Web開発の世界で世界中の一流エンジニアが使っている超メジャーな言語。ここで身につけた文法や知識は、Excelの中だけでなく、GASを使ったGoogleアプリの自動化、さらにはWebアプリ開発など、他の幅広いITスキルにそのまま直結します。
歴史あるVBAの強みを活かしつつ、新しいOfficeスクリプトの武器を手に入れて、一歩先の自動化スキルを目指してみませんか?



PR

【Officeスクリプト入門】データの入れ物「変数」の基本と型(データ型)をマスターしよう

Officeスクリプトで一歩進んだ自動化を行うために欠かせないのが「変数(へんすう)」です。今回は、変数の作り方や、データの種類を表す「型」について、分かりやすく解説します。

0. 文法:変数の宣言には「let」を使う

プログラムの中でデータを一時的に保存しておく箱のことを「変数」と呼びます。Officeスクリプトで変数を作る(宣言する)ときは、let というキーワードを使い、その後ろに好きな「変数名」を書きます。

また、Officeスクリプト(TypeScript)は、箱に入れるデータの種類(数値、文字など)を意識するルール(型システム)を持っています。

1. 実践サンプル

まずは、エディタに以下のコードを貼り付けて動かしてみましょう。変数 x を作って、初期値として 10 を入れ、それを画面に出力するシンプルなコードです。

function main(workbook: ExcelScript.Workbook) {
  // 変数xを宣言して、初期値10を代入する
  let x = 10;
  
  // 文字列と変数を「+」でつないで出力する
  console.log("xの値:" + x);
}

2. 実行結果

スクリプトエディタの右上にある実行ボタン(よこむきさんかく ▶)を押すと、画面下部の「出力」タブに以下のように表示されます。

  xの値:10

ワンポイント・アドバイス

Officeスクリプトの「型(かた)」ってなに?
今回のコードでは let x = 10; と書きました。このとき、Officeスクリプトは「右側が10(数字)だから、xは数値を入れる箱(number型)だな」と自動的に解釈してくれます。これを『型推論(かたすいろん)』と呼びます。

Officeスクリプトでよく使う代表的な型には、以下のようなものがあります。

型の名前中身の種類具体例
number(数値型) 整数や小数。計算に使う数字です。 103.14
string(文字列型) 文字のデータ。ダブルクォーテーションで囲みます。 "hello""xの値:"
boolean(論理値型) 正しいか、間違っているかを表す2択のデータ。 true(真) または false(偽)

もし、明示的に型を指定して変数を作りたいときは、let x: number = 10; のように、変数名の後ろに : 型名 をつける書き方もできます。型をしっかり決めておくことで、間違えて数値の箱に文字を入れてしまうようなバグを防いでくれるのが、VBAにはないOfficeスクリプト(TypeScript)の強みなんですよ!


【Officeスクリプト入門】デスクトップ版Excelで挑戦!「Hello world」を表示させる手順をマスターしよう

Excelの「自動化」タブから使える新しい自動化機能「Officeスクリプト」。今回は、簡単なプログラムを作って画面にメッセージを表示させる具体的な手順を、実際の画面の流れに合わせて詳しく解説します。

0. 文法:文字を出す時は「console.log()」を使うだけ

プログラムの中でログやメッセージを確認したい時は、console.log() を使います。カッコの中に入れた文字が、実行結果の画面に表示されます。

1. 実践サンプルと作成手順

それでは、さっそくExcelを開いてスクリプトを作ってみましょう!手順は以下の通りです。

  1. Excelの上部メニューにある「自動化」タブを開きます。
  2. リボンの左端にある「新しいスクリプト」から、「コードエディタで作成」を選択します。
  3. すると、画面の一番右側に「スクリプトエディタ」が立ち上がります。
  4. 開いたエディタに、以下のコードをそのまま書き込みます(またはコピーして貼り付けます)。
function main(workbook: ExcelScript.Workbook) {
  console.log("hello world");
}

2. 実行結果の確認

コードが書けたら、スクリプトエディタの右上にある実行ボタン(よこむきさんかく ▶)をクリックしてみましょう。

ボタンを押すと、エディタの下部に「出力」タブが自動的に上がってきて、以下のように結果が表示されます。

  hello world

ワンポイント・アドバイス

VBAの「Debug.Print」との違いは?
従来のExcelマクロ(VBA)でイミディエイトウィンドウに文字を出す時は Debug.Print を使っていましたが、Officeスクリプトでは console.log() を使います。これはWebの世界(JavaScriptやTypeScript)で非常によく使われる標準的な書き方なので、覚えておくと他のプログラミングにも応用が効きますよ!