忍者ブログ
バイオインフォマティックス技術者試験、情報処理試験など、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)で非常によく使われる標準的な書き方なので、覚えておくと他のプログラミングにも応用が効きますよ!


【生物学問題】進化は一進一退?「断続平衡説」を攻略

進化といえば「何百万年もかけて、少しずつ途切れなく進むもの」というイメージがあるかもしれません。しかし、それに一石を投じた重要な学説を整理しましょう。

1. 問題:進化のスピードと様式

【 問題 】 生物の進化に関する学説のうち、「種が進化する過程では、短期間に急激な変化が起こる期間と、長期間にわたってほとんど変化が起きない(平衡状態の)期間が存在する」とする説を何と呼ぶでしょうか?

① 漸変説(グラジュアリズム)   ② 断続平衡説   ③ 中立進化説   ④ 用不用説

2. 正解:進化理論に関する正解

正解: ② 断続平衡説

3. 解説:爆発的な変化と長い安定

エルドリッジとグールドによって提唱されたこの説は、化石の記録に見られる「ある時突然、新しい種が登場し、その後しばらく変化しない」という事実をうまく説明しています。

[ 進化の2つの捉え方 ]
断続平衡説(Punctuated equilibrium):環境の激変や隔離などをきっかけに、短い期間(地質学的スケールでの数万〜数十万年)に一気に新種が誕生し、一度安定するとその後は長期間(数百〜数千万年)ほとんど変化しないという考え方。
漸変説(Gradualism):ダーウィンが考えたような、世代を重ねるごとに「一歩一歩、絶え間なく、ゆっくりと」進化が蓄積していくという考え方。

1. 試験のポイント: 「短期間の急激な変化」と「長期間の安定(平衡)」という2つのフェーズが交互に現れる、というフレーズが出たら「断続平衡説」を選びましょう。木村資生氏の「中立進化説(分子レベルの進化は偶然決まる)」など、他の進化理論と混同しないように区別が必要です。
2. バイオインフォの視点: 現在のゲノム解析(分子系統樹の作製など)では、遺伝子の変化スピードが一定であると仮定する「分子時計」が使われますが、実際には環境ストレスなどによって進化の速度(変異の固定速度)が加速する時期があることが分かっています。こうした「進化速度の不均一性」をモデル化し、計算機で過去の進化の歴史をシミュレーションする研究が行われています。


4. まとめ

「進化はダラダラ進むのではなく、急激なジャンプと長い安定の繰り返しである=断続平衡説」です。システム開発で言えば、長らく安定稼働していたシステムが、大きな技術変革(環境の変化)によって短期間で一気にリプレイスされるようなイメージに近いかもしれませんね!

【VBAスタンダード対策】プロシージャを強制終了する「Exit Sub」の制御構造を攻略!

プログラムを実行中、エラーや特定の条件が発生した時点で、それ以降の処理をスキップしてプロシージャを終了させたい場合があります。その際に使用する Exit Sub の仕組みと、処理の流れる構造を正しく理解しましょう。

1. 問題:Exit Sub 実行時の処理の流れ

【 問題 】 下記のコードを実行して Main プロシージャを呼び出した際、メッセージボックスに表示される文字列はどれでしょうか?

Sub Main()
    Call CheckValue(10)
    MsgBox "完了"
End Sub

Sub CheckValue(num As Integer)
    If num > 5 Then
        Exit Sub
    End If
    MsgBox "チェック通過"
End Sub

① 「チェック通過」が表示された後、「完了」が表示される
② 「完了」だけが表示される
③ 「チェック通過」だけが表示される
④ 何も表示されずにマクロ全体が終了する

2. 正解:Exit Sub の制御フローに関する正解

正解: ② 「完了」だけが表示される

3. 解説:呼び出し元へ処理を戻す構造

Exit Sub の最も重要な構造的特徴は、「マクロ全体を終了させるわけではなく、呼び出されたプロシージャだけを終了して、呼び出し元に制御を戻す」という点にあります。

[ 処理のコントロール構造図 ]

Sub Main()
│ Call CheckValue(10) ───┐ 処理を移す
│ │
│ (戻ってきた!) ↓
MsgBox "完了" Sub CheckValue(num)
End Sub │ If 10 > 5 Then
Exit Sub ── 途中で脱出!
│ End If
MsgBox "チェック通過" (実行されない)
End Sub

1. ここが試験に出る!: スタンダード試験では、マクロ全体を終了させる End ステートメントと、そのプロシージャだけを抜ける Exit Sub の違いを突いてきます。今回のケースでは、CheckValue は途中で終了しますが、呼び出し元である Main の次の行(MsgBox "完了")に処理が戻る構造をしっかりと見極める必要があります。
2. エンジニアの視点: Java 17などの言語における `return;`(戻り値なしの即時復帰)と全く同じ構造です。実務において、不適切なデータ(事前条件の不一致)をプロシージャの最初でチェックして弾く手法を「ガード節(Guard Clause)」と呼びます。深くネスト(インデント)されたIf文を作らないための、理系NEOなスマートな設計パターンですね。


4. まとめ

「Exit Subは、その部屋(Sub)から出るだけで、元いた場所(Main)には戻る」。この構造を知っておけば、複雑なプロシージャ連携のデバッグも怖くありません。適切な脱出処理を組み込んで、無駄のない洗練された制御フローを構築しましょう。