自動化ツール・Officeスクリプトを知っていますか?Excelなどの操作をJavaScriptで記録することが特徴です。最近では、Web版のExcelにも対応。便利な使い方と共に、VBAと何が違うのかをご紹介します。ちょっとした作業は、Officeスクリプトに。
増井技術士事務所代表。技術士(情報工学部門)。情報処理技術者試験にも多数合格。ビジネス数学検定1級。「ビジネス」×「数学」×「IT」を組み合わせ、コンピュータを「正しく」「効率よく」使うためのスキルアップ支援や、各種ソフトウェアの開発、データ分析などを行う。著書に『Pythonではじめるアルゴリズム入門』『図解まるわかり プログラミングのしくみ』『「技術書」の読書術 達人が教える選び方・読み方・情報発信&共有のコツとテクニック』(以上、翔泳社)。最新刊は『1週間でシステム開発の基礎が学べる本』(インプレス)。
そもそも「VBA」と「マクロ」とは
これまでExcelなどのOfficeアプリケーションで自動化したい場合、「マクロ」という機能で実現していました。このマクロの作成に使われているのが「VBA(Visual Basic for Applications)」というプログラミング言語です。
ちょっとした自動化にはとても便利で、多くの企業でVBAを使ったシステムが現在も稼働しています。一方で、VBAの元となっているVisual Basicというプログラミング言語そのものに馴染みがないために、Excelなどの自動化を諦めていた人もいるでしょう。
また、Web版のExcelやmacOS版のExcelを使っている人が増える中で、これらの環境ではこれまでのマクロが使えないという問題がありました。
そんな中で登場したのが、「Office スクリプト」で、2023年6月にmacOSを含むデスクトップ版のExcelに対応しました。
「Officeスクリプト」とは
Officeスクリプトはこれまでのマクロと同じような自動化を実現しますが、プログラミング言語としてJavaScript(TypeScript)を使うことが大きな違いです。
これまでと同じように、マウスやキーボードでの操作を記録してそれを再現することもできますし、ゼロからJavaScriptでソースコードを記述することもできます。
Officeスクリプトを実行するには、次の3つが必要です。
- Excel for Windows (バージョン 2210 以降)、Excel for Mac、またはExcel on the web
- OneDrive for Business
- Microsoft 365 Officeデスクトップアプリにアクセスできる商用または教育機関向けのMicrosoft 365ライセンス
つまり、Excel 2016や2019、2021というバージョンではなく、Microsoft 365のビジネス向けのライセンスを使っている人が対象です。
Microsoft 365には家庭向けのライセンスもありますが、このライセンスでは使えず、商用のライセンスが必要です。
Excel 2016や2019のサポート期限まであと2年ほどとなり、企業で使っている利用者の多くはMicrosoft 365への移行が進んでいます。すでに移行している企業ではすぐにでも使用できますし、Excel 2016や2019といったバージョンを使っている企業でも導入を検討していることが多く、今後の普及が期待されています。
Officeスクリプトの簡単な使い方
ExcelでOfficeスクリプトを使うには、空白のブックなどを作成し、「自動化」タブを開きます。
管理者によってOfficeスクリプトを無効にされている可能性がありますので、その場合は管理者に確認してください。
自動化タブを開くと、上記のように「操作を記録」や「新しいスクリプト」などのメニューが表示されます。
■操作を記録するには?
まずは「操作を記録」というボタンを押してみましょう。 このボタンを押すと、マウスやキーボードでの操作の記録がスタートします。画面右側に記録されていることが表示されますので、記録したい操作をしてみます。
上記の画面右側にある「記録された操作」の欄を見ると、A1からC1のセルを編集して、そのスタイルを変更したことがわかります。そして、右端にある「停止」ボタンを押すと記録が終了します。
記録を終了したあとで、作成されたスクリプトの「編集」ボタンを押すと、次のようなソースコードが表示されます。これを見ると、JavaScript(TypeScript)のソースコードで記録されていることがわかります。
function main(workbook: ExcelScript.Workbook) {
let selectedSheet = workbook.getActiveWorksheet();
// Set range A1:C1 on selectedSheet
selectedSheet.getRange("A1:C1").setValues([["ID","名前","電話番号"]]);
// Apply cell style on range A1:C1 on selectedSheet
selectedSheet.getRange("A1:C1").setPredefinedCellStyle("Accent1");
}
■スクリプトはどこに保存される?
作成したスクリプトはこのExcelファイルとは別にOneDriveに保存されています。
これを呼び出すには、新たに空白のブックを作成したり、既存のブックを開いたりして、「自動化」タブにある「Officeスクリプト」ボタンを押します。作成したスクリプトを読み込むだけで、上記で作成した処理を実行できます。
このように、記録したものを呼び出すだけであれば、JavaScriptのソースコードが読めなくても自動化を実現できます。
これにより、Web版のExcelやmacOSのExcelでもVBAで作っていたようなマクロを使えるようになったのです。
VBAとの違い
■Excelファイルとは別にスクリプトが保存される
前述のように、Excelファイルとは別にスクリプトが保存される、というのはVBAとの最大の違いです。
VBAの場合はExcelファイルと一体として使われることが多く、作成したファイル(xlsmという拡張子のファイル)をメールなどで渡すことで、他社ともやりとりできました。これは便利な反面、マクロ付きのファイルをメールに添付して送信するタイプのウイルスも多く登場しました。
Officeスクリプトでは、スクリプトをOneDriveに保存するため、外部ユーザーとの共有はできません。組織内でのみ共有できるため、セキュリティ面でのメリットもあると言えるでしょう。
■Excelの外部からも操作できる
また、Officeスクリプトの特徴として、Power Automateとの連携も挙げられます。
これまでのVBAでは基本的にExcel内の操作しかできませんでした。しかし、RPAツールとして多くの企業で使われているPower Automateと連携することで、Excelの外部から操作できるようになったのです。
■オンライン上で操作・共有できる
VBAはローカル環境にあるファイルの操作に向いており、OfficeスクリプトはWebなどでファイルを共有して自動化するものに向いている、という違いもあります。
このため、すべてのVBAを置き換えることはありませんが、ちょっとした自動化であれば今後はOfficeスクリプトが使われることも増えていくことが想定されます。
・・・
いかがでしたか?VBAの文法に馴染みがなくても、JavaScript(TypeScript)で書けるなら試してみたい、というプログラマも多いのではないでしょうか?ぜひ試してみてください。
▼これまでのサクッとわかるITトレンド
・Pythonはなぜこれほど人気なのか
・大人も自由研究!IoTでプログラミングを体験しよう
・サイバー攻撃に備えている?その対策は本当に有効ですか
・Javaで開発するプログラマに将来性はあるのか
・ITエンジニアはWeb3とどう向き合えばいいのか
・RPAとプログラマーの役割はどう分担されるのか
・ITエンジニアのための“効率の良い”数学の学び方
・プログラマならではの「ChatGPT」の使い方
・新年度は「Obsidian」で新しいノートを作ろう
・DXへのITエンジニアの現実的な取り組み方とは
・プログラマーのスキルアップとして競プロ(競技プログラミング)に挑戦!
・プログラミング的思考はiPhone1台でも学べる時代!
・「パスキー」とは?話題のログイン方法を解説
・Copilotとは?コーディングを支援するAIを解説
・SBOMを作成する企業が増加。そのワケを解説
※本記事に記載されている会社名、製品名はそれぞれ各社の商標および登録商標です。