タイトルのテキスト
タイトルのテキスト
タイトルのテキスト
タイトルのテキスト

VBAとGASの使い方を徹底比較【メッセージ・インプット・セルの選択など】

GAS VBA

t f B! P L

  VBAとGASの画像

この記事ではマイクロソフト社のエクセルに入っているVBA(VisualBasic for Application)

Google社のGoogleスプレッドシートに入っているGAS(Google Apps Script)の使い方を比較・検証していきます。

現在、使用されている表計算ソフトではマイクロソフト社のエクセルが一番、使用ユーザーが多いです。

しかし、近年のコロナ過での在宅ワークなどで、Googleスプレッドシートを使うユーザーも非常に増えています。

エクセルとGoogleスプレッドシートは互いに互換性が高く、エクセルをGoogleスプレッドシートに読み込んで作業したり、

または、Googleスプレッドシートをエクセル形式でアウトプットすることができます。

そして、お互いに、マクロを組む「開発環境」まで整っています。

しかし、ここで大きく違う点として、マクロを組むプログラミング言語が

プログラミング言語

・エクセルはVBA(VisualBasic for Application)

GoogleスプレッドシートはGAS(Google Apps Script)

と違うのです。

VBAはマイクロソフト社がVB(VisualBasic)を元に、エクセルやアクセスといったオフィスソフトに特化した形で作ったものです。

GASGoogle社によってJS(Java Script)をベースとして

Googleが提供するアプリケーションの拡張機能に特化した形として作られました。

お互いに、表計算を自動化することができるのですが、

ベースとなる言語が違うため、記述の方法が多少異なります。

今回は、

VBAとGASの比較

・エディターの比較

・メッセージダイアログを表示させる場合

・インプットダイアログを表示させる場合

・セルを選択する場合

VBAGASでどのように違うのかをサンプルを通してみていきましょう。

VBAGASのエディターの違い

お互い、表計算をするワークシートは同様の書式をしています。

サンプルでは右がエクセル、

左がGoogleスプレッドシートとなっています。 エクセルとスプレッドシートの画像

VBAの場合はリボンにある「開発」タブの「Visual Basic」を、

GASの場合はツールボックスにある「拡張機能」から「Apps Script」を選ぶことでコードを記述するエディターを開くことができます。 

エディターを開く画像

マクロのコードを記述するエディターの書式もにていて、両方とも使いやすそうです。 

エディターの画像

VBAGASのメッセージダイアログを表示させる場合を比較【MsgBox

VBAには

VBA

Sub メッセージボックス()

MsgBox("こんにちは")

End Sub

と、

GASには

GAS

function メッセージボックス() {

SpreadsheetApp.getActiveSpreadsheet();

Browser.msgBox("こんにちは")

 }

と入力しています。 

各コードの画像

まず、

VBAの方から画面上の「ユーザフォームの実行」をクリックして動かしてみましょう 

ユーザフォームの実行

VBAのコードの意味を解説すると

解説

Sub メッセージボックス()

・マクロのタイトルです。

記述のルールとしてSub題〇〇()と記述します。

MsgBox("こんにちは")

MsgBox関数を使用して“こんにちは”と表示させます。

End Sub

・コードの終了です。

 記述のルールとしてコードの最後はEnd Subと記入します。

 メッセージダイアログが表示されて、エクセルの画面に「こんにちは」と表示されました。 

エクセルの画面に「こんにちは」と表示

 次にGAS(Google Apps Script)をツールバーにある「実行」を押して起動させましょう。 

ツールバーにある「実行」を押して起動

GAS(Google Apps Script)に入力したコードを解説します。

VBAではマクロのコードは「SubEnd Sub」の間に記述したのに対し、

GAS(Google Apps Script)では

function{ 」 ~「 } 」と括弧の中にコードを記述します。 

解説

function メッセージボックス() {

・マクロのタイトルです。

SpreadsheetApp.getActiveSpreadsheet();

・現在のスプレッドシートを取得しています。

Browser.msgBox("こんにちは")

・ブラウザーのメッセージ関数を読みだしてダイアログを表示させます。

 }

・コードの記述の終了です。 

スプレッドシート上にメッセージダイアログが表示されました。

VBAGASのメッセージダイアログを表示させる場合の比較は以上です。

VBAではMsgBoxGAS(Google Apps Script)ではBrowser.msgBoxでメッセージダイアログを表示させることができました。 

スプレッドシート上にメッセージダイアログが表示

 VBAGASのインプットダイアログを表示させる場合を比較【InputBox

次は、VBAGAS(Google Apps Script)で情報の入力を行う、InputBoxを表示させる場合を比較していきます。 

まず、サンプルでは

VBAでは

VBA

Sub インプットボックス()

Dim ip As Long

ip = InputBox("入力してください")

End Sub

GAS(Google Apps Script)の場合では

GAS

function インプットボックス() {

 SpreadsheetApp.getActiveSpreadsheet();

 var ip = Browser.inputBox("入力してください。")

}

と入力しています。 

コードの記述

VBAのコードから実行してみましょう。

最初にVBAのコードの意味を解説すると

解説

Sub インプットボックス()

・マクロのタイトルです。

Dim ip As Long

・変数ipを整数の型で使うために宣言しています。

ip = InputBox("入力してください")

・インプットボックスを表示して、入力された情報を変数ipに代入せよ

End Sub

 記述のルールとしてコードの最後はEnd Subと記入します。

VBAのコードをユーザーフォームから実行すると、エクセルのワークシートにインプットダイアログが表示されました。

サンプルでは5と入力しています。

これで、OKをクリックすると、変数ip5が格納されます。 

インプットダイアログが表示

次にGAS(Google Apps Script)を実行させてみましょう。

ツールバーにある「実行」を押して起動させます。 

ツールバーにある「実行」を押して起動

GAS(Google Apps Script)のコードの意味を解説すると

解説

function インプットボックス() {

・マクロのタイトルです。

 SpreadsheetApp.getActiveSpreadsheet();

・現在のスプレッドシートを取得しています。

 var ip = Browser.inputBox("入力してください。")

GASでは変数をしようするときは「var」で宣言します。

インプットボックスを表示して宣言した変数ipに値を格納せよ。

}

コードの記述の終了です。

VBAと同様にGAS(Google Apps Script)でもインプットボックスが表示されました。

先程と同様に5と入力しています。

VBAGASのインプットダイアログを表示させる場合の比較は以上です。 

GAS(Google Apps Script)でもインプットボックスが表示

VBAGASのセルを選択する方法を比較【RANGE

次は、VBAGAS(Google Apps Script)でセルを選択する場合を比較していきます。

まず、サンプルでは

VBAでは

VBA

Sub 範囲選択()

Range("A1:B15").Select

End Sub

GAS(Google Apps Script)の場合では

GAS

function 範囲選択() {

 var sp = SpreadsheetApp.getActiveSpreadsheet();

 var sh = sp.getActiveSheet();

 sh.getRange("A1:B15").activate();

 }

と入力しています。 

VBAのコード

VBAのコードを実行してみましょう。

ユーザーフォームの実行から実行します。 

ユーザーフォームの実行

VBAのコードの解説をすると

解説

Sub 範囲選択()

・マクロのタイトルです。

Range("A1:B15").Select

・セルはRANGE(セル範囲)で選択することができます。

 今回はセルA1~B15を選択しています。

End Sub

・コードの記述の終了

です。 

マクロを起動させるとセルA1B15までのセルが範囲選択されました。 

セルA1~B15までのセルが範囲選択

 次にGAS(Google Apps Script)を実行させてみましょう。

ツールバーにある「実行」を押して起動させます。 

ツールバーにある「実行」を押して起動

GASのコードを解説します。

解説

function 範囲選択() {

・マクロのタイトルです。

 var sp = SpreadsheetApp.getActiveSpreadsheet();

・現在のスプレッドシートを取得しています。

 var sh = sp.getActiveSheet();

・現在のワークシートを取得しています。

 sh.getRange("A1:B15").activate();

shは「現在のスプレッドシートの開いているワークシートの」という意味です。

そのワークシートからgetRangeをしようしてセルA1:B15activate(選択)しています。

 }

・コードの記述の終了です。

 ツールバーから実行すると、現在のワークシートでセルA1B15が選択されました。

VBAGASのセルを選択する方法の比較は以上です。 

ワークシートでセルA1~B15が選択

まとめ

この記事ではマイクロソフト社のエクセルに入っているVBA(VisualBasic for Application)

Google社のGoogleスプレッドシートに入っているGAS(Google Apps Script)の使い方を比較・検証していきました。

エクセルVBAでもGAS(Google Apps Script)でも同様の処理をするマクロを組むことができました。

これで、インプットボックスから得た情報をもとに、選択されたセル範囲から特定のセルを探させて、メッセージボックスで表示させる

といったマクロを組むことができます。

GAS(Google Apps Script)の方が、つどつど現在のスプレッドシートやワークシートを取得するコードを書かなくてはならないため、コードが長く見えますが、エクセルのVBAの場合でも、書いた方がいいです。

エクセルのVBAのでは書かなくても動きますが、エクエルブックが多数開かれていたり、ワークシートが違うのを選択されていた場合は、

実行時に思わぬところでマクロが動いてしまうことがあるので、本来はしっかりと記述しましょう。

これからGoogleスプレッドシートの需要はどんどん伸びていくでしょう。

ネット上で同時に編集することができて、エクセルのように直感的にしようすることができ、マクロまで組める。

となれば当然だと思います。

エクセルもどんどんと進化していって便利になっています。

どちらが上、どちらが下というものではなく、

在宅ワーク中にウェブ上で多数の人数と同時に作業がしたければGoogleスプレッドシート、

会社内で使用する基幹システムにはエクセルを使用するなどと、使い分けが大事です。

エクセルではVBA(VisualBasic for Application)が使えて、GoogleスプレッドシートではGAS(Google Apps Script)が使えます。

マクロの自動記録の方法」についても解説しているので、併せて確認してみてください!

どんどん利用して、業務を便利にしていきましょう。

koneka1208

koneka1208

自己紹介

自分の写真
エクセル好きの窓際会社員です。 エクセルの操作法や日々の会社で得た知見などを発信していきます。 よろしくお願いします。

ブログ アーカイブ

連絡フォーム

名前

メール *

メッセージ *

QooQ