Excelで、いつものように、何気なく「マクロの記録」を使っていたら、こんな画面が出て驚きました。
「マクロはOfficeスクリプトとしても使用できます」
「スクリプトを保存」をクリックすると、従来のVBAマクロと、Office Scriptの両方が保存されます。
Web版Excelから始まっていた、新しいプログラム言語「Office Script」が、ついにデスクトップ版Excelにも本格的に展開されるようです。
今回、従来通りVBAの「マクロの記録」を行うと、Office Scriptでの記録をすすめる画面が大胆に表示されるようになりました。Microsoftとしても、本腰をいれてVBAからの乗り換えを促そう、ということなのではないか? と推測しています。
※現時点では、ビジネス用・教育用のMicrosoft 365 のみでの展開です。
この記事では、「Office Scriptってなに!?」「どうして変わったの!?」というご質問にお答えするような内容を書いていきたいと思います。
Office Scriptを使ってみる
Office Scriptは「自動化」タブから
実は、少しまえから、デスクトップ版Excelにも「自動化」タブが出てました。これがOffice Scriptの入り口です。
オンライン版のExcelにはかなり前から「自動化」タブが出ていて、当店でもスクリプトを組んで実戦投入しています。
Office Scriptの文法
Office Scriptは、Javascriptに似た「TypeScript」が採用されています。
こちらに詳しくまとめられています。
まずは「操作を記録」から気軽に作ってみましょう
「操作を記録」ができるようになりましたので、VBAのときと同じように、まずはやってみるとよいと思います。
生成AIの精度は、まだいまいち
VBAのプログラミングには、もうかなり生成AIが役立つようになっていますが、Office Scriptに関しては、ちょっとまだ精度がいまいちです。
Microsoft謹製の、Copilot for Windowsでも、基本的な文法を間違えたりします。いずれ、GitHubにたくさんOffice Scriptが上がったりするようになれば、改善するのではないかと思います。
Office Script は VBA と何がちがうのか
さて、それでは、Office Script は VBA と何がちがうんでしょうか。
じつはマイクロソフトが、そっくりこのままのタイトルの記事を載せてくれてます。
Office スクリプトと VBA マクロの違い | Microsoft Learn
この記事に沿いながら、当店なりに解説してみたいと思います。
違い(1) Office Scriptは、オンライン版・デスクトップ版の両方で動作する
VBAはデスクトップアプリでしか使用できませんが、Office Scriptはデスクトップ版・オンライン版の両方で同じように動作します。ただし、現在のところExcelのみです。
そもそもOffice Scriptが最初に展開されたのは、オンライン版からでしたね。
違い(2) Office Scriptは、ブックでなくクラウドに保存され、アカウント単位で管理される
ここ数年、Excelに限らずOfficeのデスクトップアプリは、OneDriveを使用した場合、直接クラウドから読み込み、クラウドに書き込むようになっています。
いわば「クラウドファースト」といいますか、クラウド側に軸足があります。
そんななかで、Office Scriptは、Excelブックでなく、OneDriveまたはSharePointに保存されるようになっています。
また、スクリプトの管理はブック単位でなく、アカウント単位で行われます。
VBA的な例えで言いますと、”全部、個人用マクロブックにしか保存できなくて、しかもそれがクラウド上にあって、マシン単位じゃなく自分がログインしたマシン全部で有効” みたいな感覚です。
Office Scriptの保存場所
Excel上で作成したスクリプトは、既定ではOneDrive>ドキュメント>Office Scripts フォルダに自動的に保存されます。
※OneDrive内で、任意の場所に移動した後、操作によってブック内から呼び出すこともできます。
それを、後から、共有のためにSharePointの任意の場所にコピーすることができます。
VBAのように、「ブックごとメールで送る」ことはできない
これはつまり、VBAの時のように、「.xlsm」ファイルに入れ込んでメールで送ったりはできない、ということを意味します。
それではどうやって他の人にスクリプトを送るのか、といいますと、組織内であれば、SharePointに保存して共有すればOKです。
組織外の場合なんですが
スクリプトはこのように保存されています。(例として、これは私のOneDriveの中です)
拡張子「.osts」のファイルとして保存されます。
このostsファイルは、メールなどで任意に送ることができます。
受け取った側は、その添付された.ostsファイルを、OneDriveまたはSharePoint内の任意の場所に保存し、「その他のスクリプトを表示」から読み込んで使うことになります。
違い(3) Office ScriptはExcelブックに対してのみ操作できる。マシンや他のアプリは操作できない。
VBAは、VBAを実行しているアプリだけでなく、マシンに対して操作をすることもできました。
VBAでブラウザを駆動してスクレイピングを行ったり、マシンの諸元情報を取得したり、コマンドプロンプトで任意のコマンドを実行することすらできました。
Office Scriptは、こうしたことは一切できません。Excelブックにのみ操作を行うことができます。
これは、しばしば問題になる、マクロ付きExcelを使用したマルウェアは、OfficeScriptでは作れないことを意味します。
VBAでなくOfficeScriptを使用し、VBAは無効に設定することによって、セキュリティは大幅に向上します。
もしマシンを操作したいなら、今後はPower Automate Desktopで?
今までExcel VBAから様々な自動化を行ってきた方も多いと思いますが、いずれVBAが廃止された場合や、会社でVBAを無効にした場合、自動化ができなくなります。
では今後どうすればいいのか? Microsoftの施策全体を見ますと、それはPower Automate Desktopでやってください、ということなんじゃないかと思います。
違い(4) Office Scriptは Power Automateから起動できる
Power Automateは、クラウド/デスクトップをつらぬいて自動化できるプラットフォームです。
新しいOffice Scriptは、このPower Automateから起動することができます。
たとえばこれは、当店で使っているPower Automateのフローです。毎日、早朝に、その日の受講者様のリストを予約表の上に自動作成するようになっています。
“autocopy”というOffice Scriptを、あらかじめ作成してあります。それを、Power Automateが、予約表のExcelブック上で起動します。あとはOffice Scriptがリストを作ってくれます。
Excelブック自体がクラウド上にありますので、パソコンの電源はまったく入っていなくても、寝ている間にその日の受講者リストがクラウド上でできています。
このように、Office Scriptは、Power Automateとあわせて使うことで、VBAではできなかった高度な自動化を行うことができます。
違い(5) Office Scriptは、ブック上のイベントを検知できない
Office Scriptは、Excelブック上で発生する「イベント」を検知できません。
VBAでは、セルに入力する動作を検出してコードを実行したり、シート間を移動すると反応したりするマクロを書けましたが、Office Scriptではそれは実行できません。
また、Office Scriptには「ユーザーフォーム」もありません。
スクリプトがブックに保存されずクラウドに保存される、ということから、当然の帰結と言えるでしょうが、できる操作の範囲がVBAよりもかなり限られる、ということになります。
代わりにマイクロソフトは何を使えと言っているのか
できなくなった機能があると、マイクロソフトは代わりになるものを提示していることが多いです。
この場合は、なにが代わりになるのか、ということですが
などを使って実現することが考えられます。
VBAの廃止は近づいた、と判断しています
Excel Online上にOffice Scriptが登場してから3年になります。いよいよ、多くの方の見える所に出てきました。
VBAではできていたのに、Office Scriptではできないことも結構あり、どうするつもりなんだろう…と思って見ていましたが、おそらく、メリットがデメリットを上回る、と判断したんじゃないかと思います。
Emotetの主要な感染源、とされていることもあり、Microsoftはもう、本当はすぐにでもVBAをやめにしたいんじゃないでしょうか。
現在すでに、ダウンロードしたファイルのVBAは既定で無効に
現在すでに、インターネット上からダウンロードしたファイルについては、何もしなくてもマクロが強制的に無効になっています。
いずれ、ダウンロードしていないファイルについても、VBAが既定で無効にされる時期がくると予想しています。そうなっても、まだ、手動で有効にすればVBAは使えるでしょう。
その次に、いよいよVBAが完全に消える日が、少しずつ近づいているように思います。
Excelの「大変革時代」は「ユーザー参加型」
ここ数年で、Power Queryの導入、UTF-8対応、Lambda関数、LET関数、スピルの導入など、Excelの「大変革時代」が続いています。
もはやExcelは、10年前のExcelとは別物になった感があります。
これからさらに、Office Scriptによって、Excelは大きく変わっていくでしょう。
面白いことに、Office Scriptの紹介ページの下部には、こんな言葉がかかげられています。
「Office Scriptsはオープンソースプロジェクトです」
Office Scriptに限らず、最近のExcelの新機能は、ユーザーからのフィードバックを元にしたものが多いように思います。
ココから、簡単にフィードバックが送れるようになっています。
「そんなことされたら困ります」とか「それをやるならこうしてくれ」とか。
マイクロソフトも、ユーザーに歯向かってGoogleに乗り換えられたら大変だと思っているはず。どんどん送っていけばいいと思いますね。
コメント