【Office Scriptsまとめ記事】Excel VBAユーザーの為のOffice Scriptsについて説明します

Office Scripts

こんにちは、blueです。

  • Office ScriptsってExcelオンライン上のVBAのことでは?
  • Office ScriptsってVBAを使えれば簡単に使えるんじゃ?

VBAを使える方ならそう思っている方もおられるんじゃないでしょうか?

しかし、実際中身は大きく異なっています。
実際私はセルの取得にすら30分程度かかってしまいました。

そこで今回は私がOffice Scriptsを勉強していくにあたって感じた、Excel VBAとの違いについて記事にしていくことにします。
Office Scriptsに興味のある方これから勉強しようと思う方に参考になれば幸いです。

なお、今回の記事は以下を参考にさせていただいています。

@kinuasaさん VBA開発者のためのOffice スクリプト入門
@Aliceさん 【Oficeスクリプト】ExcelVBAとOfficeスクリプトの違いを調べてみた
ひろ@VBAid ExcelVBAさん Excel VBAしか知らない私が、Excel Scriptを独学

どの方の記事も非常にわかりやすいので参考にしていただければ幸いです。

スポンサーリンク

結論

私が感じたExcel VBAとOffice Scriptsの違いは以下の3つです。

  • 使用する環境が異なる
  • ベース言語が異なる
  • 他のアプリなどとの連携方法が異なる

次から詳しく説明していきます。

使用する環境が異なる

まずExcel VBAとOffice Scriptsについては使用するアプリが異なります。

Excel VBAデスクトップ版Excelで使います。
一方 Office ScriptsExcelオンライン(Excel on the web)で使います。

単純にExcelアプリの違いだけ?と思われたかもしれませんが使用する環境面では大きく異なります。

Excel VBAはローカルのパソコン上、Office Scriptsはクラウド上を起点に動作します。

利用する環境をイメージにするとこんな感じです。

クリックすると拡大します

上記のようにExcel VBAはパソコンの起動が必要になりますが、Office Scriptsパソコンが必要ありません。これが一つの大きな違いになります。

一方使用する為の要件も異なります。

Excel VBAを使用するにはOfficeのライセンスが必要になります。

一方Office Scriptsを使用する際は以下のライセンスが必要となります。

1 OneDrive for Business

2 Microsoft 365 Office デスクトップ アプリにアクセスできる、次のような商用または教育機関向けの Microsoft 365 ライセンス

  • Office 365 Business
  • Office 365 Business Premium
  • Office 365 ProPlus
  • Office 365 ProPlus デバイス用
  • Office 365 Enterprise E3
  • Office 365 Enterprise E5
  • Office 365 A3
  • Office 365 A5

内容については以下Docsに書かれていますので参考ください。

Office Scriptsを使用するには、基本個人で課金するか学校や組織に属するしかありません。

ただMicrosoftには開発者プログラムと言って無料で試用環境を構築できるサービスがあります。

このプログラムを利用すればOffice Scriptsの勉強ができますので是非登録していただければと思います。

詳しい記事はこちら

ベース言語が異なる

Excel VBAVisual Basicをベースとしたプログラムです。
一方Office ScriptsTypeScriptというJavaScriptを拡張したものをベースとしたプログラムになります。

実際のコードは以下の様になります。

function main(workbook: ExcelScript.Workbook): string[] {
  let NoReplyPerson:string[]=[];
  let tRow:number=1;
  let i:number=0;
  let sheet=workbook.getWorksheet("Sheet1");
  while (sheet.getCell(tRow++,1).getValue() !=""){
    if(sheet.getCell(tRow++,10).getValue() =="×"){
      NoReplyPerson[i] = sheet.getCell(tRow++, 2).getValue().toString();
      tRow++;
      i++;
    }else{
      tRow++;
    }
       
  }
  console.log(NoReplyPerson)
  return NoReplyPerson
}

Excel VBAとかなり見た目記載方法が違うことが分かっていただけるかと思います。

ここがExcel VBAとOffice Scriptsの最も大きな違いであり、VBAが書けるからと言ってすぐにOfficeScriptsが使用できない理由になります。

なお、オブジェクトモデルはExcelのUIを基本としている為、どちらも同じような形にはなっていますが、演算子プロパティメソッド名についてはJavaScriptをベースとしているので最初はかなり違和感を感じます。

詳しい記事はこちら
【Office Scripts】Excel VBAユーザーの為のOffice Scripts(変数、演算子)
【Office Scripts】Excel VBAユーザーの為のOffice Scripts(配列、オブジェクト)
【Office Scripts】Excel VBAユーザーの為のOffice Scripts(制御構文)
【Office Scripts】Excel VBAユーザーの為のOffice Scripts(Excel操作)

他との連携方法が異なる

Excel VBAライブラリによる拡張が可能です。
一方Office ScriptsPower Automateとの連携による拡張が可能です。

Excel VBAは参照設定によりWordやPower Point, Outlookなどに拡張することできます。
またWindows APIやHTTPリクエストによる他のAPIの使用も可能です。

一方Office Scriptsは今のところPower Automateによる連携がメインになります。

WordやPower PointにはOffice Scriptsは2022/08/11現在では存在していません。
また他のAPIの使用もPower Automateを介したものになります。
その為Office ScriptsではPower Automateの理解も必要になります。

連携を行った記事はこちらをどうぞ

その他

Excel VBAにできてOffice Scriptsにできないことは以下の様なものがあります。

  • 他のブックの操作
  • 単独での他との外部連携
  • イベント

こちらは冒頭のAliceさんの記事で書かれているのでそちらを参照ください。

まとめ

私が感じたExcel VBAとOffice Scriptsの違いは以下の3つでした。

  • 使用する環境が異なる
  • ベース言語が異なる
  • 他のアプリなどとの連携方法が異なる

どの内容もVBAと比べると少し大変のように感じるかと思います。

ただ今後ファイルなどをクラウド上で利用する機会は今後どんどんと増えていくと思われます。
Office Scriptsをベースにクラウド上のアプリや他の言語に触れていくのもいいかなと考えます。

ぜひ参考にしてみてください。

Office Scriptsを一から学んでみたい方は以下の書籍がお勧めです。TypeScriptの基本からPower Automateへの連携まで、OfficeScriptsを扱う為の一通りの内容が書かれています。

Office Scriptsって何?という基本から知りたい方は以下の書籍がお勧めです。技術書ながら非常に読みやすい構成となっているので、本を読むのが苦手な人もストレスなく勉強できるかと思います。

コメント

タイトルとURLをコピーしました