普段Excelをお使いの方なら、スプレッドシートでVBAが使えたらいいなと思ったことがあるのではないでしょうか。
実は、全く同じようには動かないのですが、仕組みを理解すれば同じような自動化を実現することは可能です。
ここでは、スプレッドシートとVBAの違いや、基本的な実行環境について解説していきますね。

GASとVBAの決定的な仕様の違い
「スプレッドシートでVBA(Visual Basic for Applications)は使えるの?」と疑問に思う方も多いと思います。結論から言うと、Googleスプレッドシート上でExcelのVBAコードを直接実行することはできません。これは、開発元がMicrosoftとGoogleで異なるだけでなく、根底にあるシステムやプログラミング言語が全く違うからです。
しかし、がっかりする必要はありません。
スプレッドシートには、VBAの代わりとなるGoogle Apps Script(GAS)という強力な機能が用意されています。
- VBAのベース言語:Visual Basic
- GASのベース言語:JavaScript
言語が違うということは、変数の宣言(Dimとlet/const)や条件分岐(If...End Ifとif(){})など、文法のルールが大きく変わるということです。そのため、単純にVBAのコードをコピペして動かすことはできず、GASのルール(JavaScript)に合わせて書き直す必要があります。
例えば、VBAでセル「A1」の値を取得する場合はRange("A1").Valueと書きますが、GASではgetRange("A1").getValue()と書きます。
一見似ていますが、スプレッドシート特有の命令体系(オブジェクトモデル)への理解が必要になってきます。
動作環境とローカル処理の互換性
VBAとGASのもう一つの決定的な違いは、「プログラムがどこで動いているか(実行環境)」です。
ExcelのVBAは、皆さんが使っているパソコン(ローカル環境)の中で動きます。
そのため、パソコン内の特定のフォルダにあるファイルを直接操作したり、Windowsの機能を使ったりするのが得意です。
一方、GASはGoogleのデータセンターにあるサーバー(クラウド環境)上で動きます。
この違いがもたらす影響は非常に大きいです。
ローカル操作の制限
GASはクラウド上で動くため、セキュリティ上の理由から、皆さんのパソコン内にあるローカルファイルやフォルダを直接操作することはできません。
ファイルを保存したり読み込んだりする先は、ローカルのCドライブなどではなく、Googleドライブになります。
VBAでローカルファイルを操作するマクロを組んでいた場合は、この前提が変わるため、処理の仕組み自体を見直す必要があります。
しかし、クラウドで動くことには大きなメリットもあります。
それは、「パソコンの電源が入っていなくても、プログラムを自動で動かせる」という点です。これは後ほど解説する「トリガー」機能によって実現できます。
マクロ記録機能の仕組みと活用法
「プログラミングは少しハードルが高い…」という方にとって便利なのが「マクロの記録」機能ですよね。実はスプレッドシートにも、Excelと同じようにマクロの記録機能が用意されています。
スプレッドシートでマクロを記録するには、メニューバーの「拡張機能」>「マクロ」>「マクロを記録」を選択します。
記録を開始すると、セルの選択や文字の入力、色の変更といった皆さんの操作が、裏側で自動的にGASのコード(JavaScript)に変換されて保存されます。
記録の2つのモード
- 絶対参照:常に「A1」や「B2」といった特定のセルに対して操作を記録します。
- 相対参照:「今選択しているセルから1つ右へ」といったように、相対的な位置で操作を記録します。
スプレッドシートの素晴らしいところは、記録して出来上がったGASのコードが比較的綺麗で、後から編集しやすい点です。
「Apps Scriptエディタ」を開けば、自動生成されたコードを確認できます。
最初はマクロの記録で基本の操作をコード化し、そこに「もし〇〇だったら(if文)」といった条件や「〇回繰り返す(for文)」といった処理を少しずつ付け足していくのが、GASを学ぶ近道でおすすめです。
移行時に起きるエラーと解決策
Excelからスプレッドシートへマクロを移行しようとしたとき、環境の違いによるエラーに直面することがよくあります。ここでは代表的なエラーの原因と対処法をいくつか紹介します。
1. Excel形式のまま開いている
最も多いトラブルがこれです。GoogleドライブにアップロードしたExcelファイル(.xlsx)をそのまま開いて編集している状態では、マクロやGASの機能は一切使えません。
メニューの「ファイル」から「Googleスプレッドシートとして保存」を選択し、完全にスプレッドシートの形式に変換する必要があります。
2. 承認(アクセス権の許可)をしていない
GASのスクリプトを初めて実行しようとすると、「承認が必要です」といった警告ダイアログが出ることがあります。
これは、スクリプトが皆さんのGoogleドライブのデータ等にアクセスして良いかを確認するセキュリティ機能です。詳細画面から「許可」を選ばない限り、マクロはブロックされて動きません。
3. 6分ルールの壁(タイムアウトエラー)
VBAの感覚でGASを組むと、処理速度が極端に遅くなりエラーになることがあります。GASには「1回の実行につき最大6分間」という厳しい制限時間があります。
VBAのように、1セルずつ順番に読み書き(ループ処理)をすると、GASでは毎回クラウドとの通信が発生するため、あっという間に6分を超えて強制終了されてしまいます。
これを解決するには、「バッチ処理」という考え方が必須です。
必要な範囲のデータを一度にまとめて読み込み(getValues)、メモリ上で計算を済ませた後、結果を一度にまとめてシートへ書き出す(setValues)という書き方に変更することで、処理時間を劇的に短縮できます。
スマホからのマクロ実行と注意点
最近は、外出先や現場からスマートフォンでスプレッドシートを確認・更新する機会も増えましたよね。
しかし、スマホのGoogleスプレッドシートアプリからマクロ(GAS)を実行しようとすると、少し厄介な問題があります。
パソコン版では、シート上に図形で「実行ボタン」を作ったり、独自のメニューを追加したりしてマクロを動かせますが、スマホアプリではこれらのボタンやメニューは表示されない、または機能しません。
スマホからマクロを実行するための効果的な裏技が、「チェックボックス」と「onEditトリガー」の組み合わせです。
- シートの分かりやすい場所(例:A1セル)に「チェックボックス」を挿入します。
- GAS側で、セルが編集された時に自動で動く「onEdit」という設定(トリガー)を作ります。
- 「A1セルのチェックが入った(trueになった)時だけ」メインの処理を実行するようにプログラムを書きます。
- 処理の最後に、チェックボックスを自動でオフ(false)に戻します。
この仕組みを作れば、スマホの画面でチェックボックスを「タップ」するだけで、ボタンの代わりにマクロを起動させることができます。
現場からの報告業務などを自動化したい場合に、非常に役立つテクニックです。
スプレッドシートのVBA移行とGAS活用

ここからは、実際にExcelのVBA資産をどのようにスプレッドシート(GAS)へ移行し、活用していくのか、具体的な手法について解説していきます。
移行にはいくつかのアプローチがあるので、自分に合った方法を見つけてみてください。
既存コードを手作業で移行する方法
1つ目は、最も地道ですが確実な「手作業でGASに書き直す」方法です。
元のVBAコードの処理の流れ(ロジック)を読み解きながら、GASの文法(JavaScript)を使って一からコードを構築していきます。
この方法の最大のメリットは、GAS(クラウド環境)に最も適した無駄のないプログラムを作れることです。
前述した「1セルずつの処理から、配列を使った一括処理への変更」など、根本的なスピード改善(リファクタリング)を行いながら移行できるため、完成後の動作は非常に安定します。
しかしデメリットとして、VBAとGAS両方の知識が必要になるため、学習に時間がかかります。
大規模なシステムや複雑なマクロを手作業で全て書き直すのは、現実的に難しいケースも多いでしょう。まずは小規模でシンプルなマクロから試してみることをおすすめします。
公式変換ツールによるコード変換
2つ目は、Googleが公式に提供している拡張機能「Macro Converter(マクロコンバーター)」を使って自動変換を試みる方法です。
手作業の負担を減らすための強力なサポートツールと言えます。
使い方の基本的な流れは以下の通りです。
- VBAが含まれたExcelファイルをGoogleドライブにアップロードします。
- Macro Converterを起動し、対象ファイルを選択します。
- いきなり変換せず、まずは「互換性レポート」を出力して、GASに変換できそうな部分と難しそうな部分を診断します。
- レポートを確認後、変換処理を実行します。
とても便利なツールですが、万能ではありません。
VBA固有の機能(例えば、ユーザーフォームと呼ばれる入力画面や、ローカルファイルへのアクセスなど)は、仕組みが全く違うため自動変換できずエラーになります。
あくまで「基本的な構文をGASに一括で置き換えてくれる補助ツール」として捉え、変換できなかった部分は最終的に手作業で修正するという前提で活用するのが上手な使い方です。
生成AIを活用したスクリプト変換
3つ目は、最近注目されているChatGPTやGeminiなどの生成AIを活用する方法です。
AIに「このVBAコードをGoogle Apps Scriptに変換してください」とお願いするだけで、精度の高いGASコードを提案してくれます。
AIを活用する際のコツは、「具体的な条件(プロンプト)」を添えることです。
AIへの指示出しの例
「以下のExcel VBAコードをGoogleスプレッドシートのGASに変換してください。その際、実行速度が遅くならないように、二次元配列を使ってデータを一括で読み書きする処理に変更してください。」
このように指示することで、GAS特有のルールに沿ったコードを生成してくれます。
ただし、AIは時折、実在しないGASの命令をでっち上げる(ハルシネーション)ことがあります。そのため、AIが生成したコードをそのまま鵜呑みにせず、必ずテスト実行をして正しく動くか自分の目で確認・修正することが重要です。
外部API連携による業務の自動化
GASに移行する最大の魅力の一つが、「他のWebサービスとの連携が圧倒的に簡単になること」です。
VBAでも外部通信は不可能ではありませんでしたが、設定が非常に複雑でした。
一方GASは、Webの技術(JavaScript)をベースに作られているため、インターネット上のサービス(API)と通信するのが得意です。
例えば、GASに標準で用意されているUrlFetchAppという機能を使えば、数行の短いコードで次のような連携が可能です。
- スプレッドシートにデータが追加されたら、自動でSlackやChatworkに通知を送る。
- 特定のシステムから最新のデータを取得して、シートを自動更新する。
さらに、GmailやGoogleカレンダーといったGoogle Workspace内の他のサービスと連携するのも非常に簡単です。スプレッドシートのリストから一括でメールを送信したり、カレンダーに予定を自動登録したりと、業務効率化の幅が劇的に広がります。
トリガー設定による処理の自動実行
もう一つ、GASならではの強力な機能が「トリガー」です。
これは、「決められた時間や、特定の動作をきっかけにして、自動でマクロ(スクリプト)を動かす仕組み」のことです。
ローカル環境のVBAでは、基本的に人が手動でマクロを実行するか、パソコンをつけっぱなしにしておく必要がありました。
しかし、クラウドで動くGASなら、パソコンをシャットダウンしていても設定した通りに勝手に動いてくれます。
代表的なトリガーの例
- 時間主導型トリガー:「毎日朝9時」「毎週月曜日の午前中」「1時間ごと」など、スケジュールに合わせて実行します。夜間の自動集計などに便利です。
- イベント駆動型トリガー:「スプレッドシートを開いた時」「セルが編集された時」「Googleフォームから回答が送信された時」など、何かしらのアクションをきっかけに実行します。
このトリガー機能を駆使することで、完全に無人の状態でのバッチ処理や、リアルタイムなデータの連動が可能になります。
スプレッドシートのVBA移行のまとめ
ここまで、スプレッドシートでVBAの資産をどう活かすか、GASへの移行戦略について解説してきました。
結論として、「ExcelのVBAをそのままスプレッドシートで動かす」ことはできませんが、GAS(Google Apps Script)という強力なツールを習得することで、VBAと同等、あるいはそれ以上の自動化を実現できます。
言語の違いや「6分ルール」といったクラウドならではの制約(バッチ処理の必要性)など、最初は戸惑うこともあるかもしれません。変換ツールや生成AIを賢く活用して初期のハードルを下げつつ、少しずつGAS特有の作法に慣れていくのがおすすめです。
単にマクロを引っ越しさせるだけでなく、時間指定トリガーによる「完全自動化」や、Slack・Gmailなどとの「外部連携」など、クラウドだからこそできる新しい業務フローを構築するチャンスだと捉えてみてください。
スプレッドシートとGASの組み合わせは、皆さんの業務効率を間違いなく一段引き上げてくれるはずです。

