スプレッドシートでVBAは使えない?GASとは?移行する4つの方法

アイキャッチ_スプレッドシートでvbaは使えない

この記事では、VBA付きのExcelをGoogleスプレッドシートに移行する方法を紹介します。そのままコードをコピペすれば、コードが動作することはないので、適切な移行方法を選ぶ必要があります。

目次

結論 Excel VBAはスプレッドシートでそのまま使えません

Excel業務の効率化で活躍するVBAマクロですが、GoogleスプレッドシートではVBAを直接実行できません。両者は開発元も設計思想も異なるアプリケーションだからです。

しかし、代替案はあります。スプレッドシートには専用のプログラミング言語が用意されており、VBAで実現していた自動化の多くを再現可能です。

VBAはMicrosoftが開発したVisual Basic for Applicationsを基にしています。

一方、スプレッドシートではGoogleが開発したGoogle Apps Script、通称GAS(ガス)を使用します。GASはWeb技術と親和性の高いJavaScriptを基にしており、GmailやGoogleカレンダーのような他のGoogleサービスとの連携を簡単に実現できる点が強みです。

ExcelのVBA資産をスプレッドシートで活かすには、このGASへコードを書き換える作業、すなわち「移行」が必要になります。

なぜExcel VBAからGASへの移行は難しいのか 3つの壁

Excel VBAからGASへの移行は、単にコードをコピー&ペーストするだけでは完了しません。多くの場合、専門的な知識が求められます。その背景には、両者の間に存在する3つの大きな違いがあります。これらの壁を理解すると、移行の難易度がイメージできるでしょう。

1. 言語仕様の違い Visual BasicとJavaScript

VBAからGASへの移行が難しい第一の理由は、ベースとなるプログラミング言語が全く異なるからです。VBAはVisual Basicという言語を基にしていますが、GASはJavaScriptがベースです。たとえば、変数の宣言方法や繰り返し処理の書き方など、基本的な文法ルールが違います。そのため、VBAのコードを1行ずつGASの文法に翻訳し直す作業が発生します。単純な処理であれば機械的な変換も一部可能ですが、複雑なロジックになるほど、言語の特性を理解した上での再設計が求められるでしょう。

2. 実行環境の違い ローカルとクラウド

第二の壁は、プログラムが動作する環境の違いです。VBAは、PCにインストールされたExcel上で動作します。これをローカル環境とよびます。一方、GASはGoogleのサーバー上で動作するクラウド環境です。この違いは、ファイルの扱い方などに影響をあたえます。たとえば、VBAではPC内の特定のフォルダにあるファイルを参照する処理を記述しますが、GASではGoogleドライブ上のファイルを操作する記述方法に変わります。実行環境の違いを意識した修正が必要です。

3. オブジェクトモデルの違い セルやシートの操作方法

第三に、アプリケーションを操作するための命令文、すなわちオブジェクトモデルが異なります。たとえば、Excelのシートやセルを操作するVBAの命令文は、そのままではスプレッドシートには通用しません。スプレッドシートを操作するためのGAS専用の命令文にすべて置き換える必要があります。

比較項目Excel VBAGoogle Apps Script (GAS)
言語ベースVisual BasicJavaScript
実行環境ローカルPCGoogleのクラウドサーバー
操作命令Excel独自の命令体系Google Workspace独自の命令体系

上記の表が示すとおり、VBAとGASは似ているようで全くの別物です。そのため、単純な置き換えでは対応できず、専門的な知識と技術が求められます。

Excel VBAをスプレッドシートへ移行する4つの方法

VBAからGASへの移行には複数のアプローチがあります。それぞれの方法にメリットとデメリットがあり、自動化したい業務の複雑さや重要度によって最適な選択肢は異なります。ここでは代表的な4つの方法を紹介しますので、ご自身の状況に合ったものを見つけてください。

1. 手動でGASコードを書き直す

1つ目は、VBAのコードを見ながらGASのコードを1から手で書き直す方法です。VBAとGASの両方に精通している場合に有効な手段といえるでしょう。この方法のメリットは、元のVBAの意図を汲み取りながら、GASの利点を最大限に活かした最適なコードを設計できる点にあります。一方で、習得に時間がかかる上、コードの規模が大きくなるほど膨大な工数が必要です。小規模で単純なマクロの移行には向いていますが、複雑な業務ロジックを含む場合は現実的ではないかもしれません。

2. Macro Converterアドオンを利用する

2つ目は、Googleが公式に提供している「Macro Converter」というアドオンを使用する方法です。このツールは、ExcelファイルをGoogleドライブにアップロードすると、ファイル内のVBAコードをGASに自動変換する機能をもっています。

Macro Converterの主な機能
  • VBAコードのGASへの自動変換
  • 変換できなかった箇所のレポート表示
  • 互換性のない機能の特定

上記の機能により、変換作業の一部を自動化できます。ただし、このツールは万能ではありません。変換できるのは基本的な命令文に限られ、複雑なロジックやExcel独自の機能を使っている部分は変換できずにエラーとなります。あくまで移行作業の補助ツールと位置づけ、過度な期待はしないほうが良いでしょう。

3. ChatGPTなどAIでコードを変換する

3つ目は、ChatGPTのような生成AIを活用してコードを変換する方法です。AIにVBAコードを入力し「このコードをGASに変換してください」と指示すると、変換後のコードを生成してくれます。簡単なコードであれば、高い精度で変換が可能です。

私がプロンプトを設定したGPTs「スプレッドシートやっときますAI」も、Excelからスプレッドシートへの移行を手伝ってくれます。

しかし、AIが生成したコードが常に正しいとは限りません。間違ったコードを生成する恐れもあり、正常に動作しないケースも多いです。生成されたコードが正しいかどうかを自分で判断し、修正できるだけの知識が結局は求められます。

4. 専門家へ依頼して確実な移行を実現する

4つ目は、VBAやGASの開発を専門とする外部の専門家や開発会社に依頼する方法です。この方法の最大のメリットは、移行の確実性と安全性です。業務内容を深くヒアリングした上で、最適な設計でGASのプログラムを構築してくれます。特に、業務の根幹に関わるような複雑で重要なExcelマクロの移行には、この方法が最も適しているでしょう。実績豊富な専門家であれば、単にコードを変換するだけでなく、クラウド化を機により効率的な業務フローを提案してくれる場合もあります。

実際にExcel(VBA有)からGoogleスプレッドシート(GAS有)に移行したことがあります。そのときの様子は、次の関連記事をご覧ください。

どの移行方法を選ぶべき?状況別の選び方ガイド

VBAからGASへの移行方法には、それぞれ一長一短があります。どの方法が最適かは、移行対象のマクロの複雑さや、そのマクロが業務においてどれだけ重要かによって変わります。自社の状況を客観的に判断し、適切な方法を選択するための指針を示します。

ケース1 簡単な定型作業の自動化なら手動やツールで

もし移行したいVBAマクロが、データ転記や簡単な計算といった単純な処理で、かつ、もし動かなくなっても業務への影響が軽微なものであれば、まずは手動での書き換えやMacro Converter、AIツールの利用を試してみるのが良いでしょう。これらの方法はコストを抑えられ、GASの学習にもつながります。ただし、あくまで自己責任の範囲で実施する必要があり、エラーが発生したときには自力で解決するスキルが求められます。もし自力での解決が難しいと感じた場合は、早めに専門家への相談に切り替える判断も必要です。

ケース2 業務の根幹に関わる複雑なVBAは専門家へ相談を

一方で、受注管理や請求処理のような、会社の業務の根幹を支える複雑なVBAマクロの場合は、専門家への依頼を強く推奨します。このようなマクロは、作成した担当者の退職などによって仕組みがブラックボックス化しているケースも少なくありません。

事業リスクを診断するチェックリスト
  • マクロの作成者が既に退職している
  • マクロの仕様書やドキュメントが存在しない
  • エラーが発生しても誰も修正できない
  • 会社の基幹業務で利用している
  • 処理が複雑でコードが1,000行以上ある

これらの項目に1つでも当てはまる場合、自力での移行は高いリスクをともないます。専門家は、複雑なロジックを正確に読み解き、安全にGASへ移行するノウハウをもっています。単なる移行作業だけでなく、事業継続のリスクを低減する「業務の保険」としての価値があるでしょう。

VBA経験者向け GASの基本とコード書き換え比較

VBAでの開発経験がある方に向けて、GASの基本的な考え方と、よく使う処理のコード書き換え例を紹介します。VBAとGASでは、似たような処理でも記述方法が大きく異なります。具体的なコードを比較しながら、両者の違いを理解していきましょう。

1. 基本的な構文の比較

VBAとGASでは、変数の宣言や関数の定義といった基本的な文法が異なります。VBAは行単位で処理を記述しますが、JavaScriptベースのGASでは文の終わりにセミコロン(;)をつけ、波括弧({})で処理のブロックを囲むのが一般的です。

項目Excel VBAGoogle Apps Script (GAS)
変数宣言Dim i As Integerlet i; または const i = 0;
関数定義Sub MyFunction()
...
End Sub
function myFunction() {
...
}

上記の表のとおり、基本的なお作法から違いが見られます。VBA経験者がGASを学ぶときは、まずこのJavaScript特有の書き方に慣れる必要があります。

2. セルやシートを操作するコード例

VBA経験者が最も戸惑うのが、セルやシートを操作する命令文の違いです。GASでは、まずスプレッドシート全体を取得し、そこからシート、そしてセル範囲へと段階的に対象を絞り込んでいきます。

処理内容Excel VBAGoogle Apps Script (GAS)
アクティブシート取得Set ws = ActiveSheetconst sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
セル(A1)の値を取得val = ws.Range("A1").Valueconst val = sheet.getRange("A1").getValue();
セル(A1)に値を設定ws.Range("A1").Value = "test"sheet.getRange("A1").setValue("test");

GASのコードはVBAに比べて長くなる傾向がありますが、これはより厳密に対象を指定しているためです。この記述方法に慣れるのが、GAS習得の第一歩といえるでしょう。

3. ボタンを作成してスクリプトを実行する方法

スプレッドシートでは、シート上に図形を挿入し、その図形にGASの関数を割り当てることで、VBAのフォームコントロールのような実行ボタンを作成できます。まず、メニューの「挿入」から「図形描画」を選択し、好きな形の図形を作成してシート上に配置します。次に、配置した図形の右上にあるメニューボタン(点が3つ並んだアイコン)をクリックし、「スクリプトを割り当て」を選択します。表示された入力欄に、実行したいGASの関数名(例: myFunction)を入力して保存すれば、ボタンの完成です。このボタンをクリックすると、指定した関数が実行されます。

よくある質問

VBAからGASへの移行を検討する際に、多くの方が抱く疑問についてお答えします。特に、VBAで多用される機能がGASでどのように扱われるのかは、気になるポイントでしょう。ここでは、代表的な2つの質問を取り上げます。

Q. Excelのユーザーフォームは移行できますか

結論として、Excel VBAで作成したユーザーフォームを、そのままスプレッドシートに移行する方法はありません。GASには、VBAのユーザーフォームに直接対応する機能が存在しないからです。代替案としては、スプレッドシートのメニューに独自の項目を追加する方法や、HTMLを使用してWebページのような入力フォームを作成する方法があります。

ユーザーフォームの代替案
  • カスタムメニューの作成
  • サイドバーやダイアログの表示
  • Googleフォームとの連携

上記の代替案は、いずれもVBAとは異なるアプローチが必要です。入力画面の設計から見直す必要があるため、移行の中でも特に難易度が高い部分といえるでしょう。

Q. GASに実行時間の制限はありますか

はい、GASには実行時間に上限が存在します。無料のGoogleアカウントの場合、1つのスクリプトの実行時間は最大で6分間に制限されています。大量のデータを扱う処理では、6分を超えてエラーになる恐れがあります。これはローカルPCで動作し、明確な時間上限がないVBAとの大きな違いの1つです。

まとめ VBA移行はExcel業務を見直す絶好のチャンスです

Excel VBAはスプレッドシートで直接使えず、代替案であるGASへの移行には専門的な知識が必要です。手動での書き換えやツール利用も可能ですが、業務の根幹を支える複雑なマクロほど、移行は困難をきわめます。特に作成者が退職しブラックボックス化したVBAマクロは、事業継続における潜在的なリスクです。

このVBAからの移行は、単なるツールの置き換えではありません。属人化していた業務プロセスを標準化し、チーム全体で共有できる持続可能な仕組みへと進化させる絶好の機会です。もし自社での移行に少しでも不安を感じるなら、一度専門家に相談してみてはいかがでしょうか。確実な技術で移行を成功に導くだけでなく、業務改善のパートナーとして、ビジネスの成長をサポートしてくれるでしょう。

  • URLをコピーしました!

この記事を書いた人

GASやVBAを使って、スプレッドシートやExcel作業を自動化しています。自分のつくったプログラムが、誰かの時間を節約できたらうれしいです。また、SEOライターとして、節約メディアや視覚障害メディアで執筆しています。広島県安芸郡府中町在住。

目次