VBとVBAの違いや、どういう時に分ければいいのか、というような質問がたまに質問が出るようなので、こちらでも取り上げる。
先にVBAから説明すると、VBAはOffice製品などのアプリケーションを活用するための言語である。
例えばExcelではExcel4までは独自のマクロ言語、Accessでも独自のBasicがあった。今でもそうだが、各アプリケーションごとにマクロやらスクリプトがあって、それごとに覚える必要がある。それを、マイクロソフトが当時作っていたVBと同じような言語体系でマクロを作れば覚えやすいだろう、ということで作ったのだろう。当時は表計算ならロータス123、データベースならボーランドDBaseがデファクトスタンダードだったのだ。これだけが他のデファクトスタンダードを駆逐したわけではないだろうが、小さいながらも一要因だろうと思う。
単に記述を揃えるだけではない。おそらくは、呼び出す実行ファイルも同じものにしているのだろう。そうすればマイクロソフト社内でも部品の使い回しが効くため効率が格段によくなる。そのことがアプリケーションのマクロであるVBAの可能性を広げたと思う。
例えば、外部データベースとの連携。これだけを取っても、VBと記述内容を合わせられるだけでも、技術者の共有が図れるし、動作保証もできることになる。
今だとかなりいろいろな所にも使えるが、基本はやはりExcelやAccessといったアプリケーションが中心になるべきものである。該当するアプリケーションが起動していないと動かないのだから。
一方、VBは、作りたいように作れる。アプリケーションに表裏一体であるという制限もないので、VBAのように該当アプリケーションがインストールされていないと動かない、ということもない。
勉強する時点で悩む、と言うことなら分かるが、VBAで作るかVBで作るか、悩むところではないと思う。本来は明確にどういうことを実現したいか、が分かっているはずだから。
それでも悩む方がいらっしゃるなら、質問をいただいた際にケースバイケースでも答えてみようと思う。
先にVBAから説明すると、VBAはOffice製品などのアプリケーションを活用するための言語である。
例えばExcelではExcel4までは独自のマクロ言語、Accessでも独自のBasicがあった。今でもそうだが、各アプリケーションごとにマクロやらスクリプトがあって、それごとに覚える必要がある。それを、マイクロソフトが当時作っていたVBと同じような言語体系でマクロを作れば覚えやすいだろう、ということで作ったのだろう。当時は表計算ならロータス123、データベースならボーランドDBaseがデファクトスタンダードだったのだ。これだけが他のデファクトスタンダードを駆逐したわけではないだろうが、小さいながらも一要因だろうと思う。
単に記述を揃えるだけではない。おそらくは、呼び出す実行ファイルも同じものにしているのだろう。そうすればマイクロソフト社内でも部品の使い回しが効くため効率が格段によくなる。そのことがアプリケーションのマクロであるVBAの可能性を広げたと思う。
例えば、外部データベースとの連携。これだけを取っても、VBと記述内容を合わせられるだけでも、技術者の共有が図れるし、動作保証もできることになる。
今だとかなりいろいろな所にも使えるが、基本はやはりExcelやAccessといったアプリケーションが中心になるべきものである。該当するアプリケーションが起動していないと動かないのだから。
一方、VBは、作りたいように作れる。アプリケーションに表裏一体であるという制限もないので、VBAのように該当アプリケーションがインストールされていないと動かない、ということもない。
勉強する時点で悩む、と言うことなら分かるが、VBAで作るかVBで作るか、悩むところではないと思う。本来は明確にどういうことを実現したいか、が分かっているはずだから。
それでも悩む方がいらっしゃるなら、質問をいただいた際にケースバイケースでも答えてみようと思う。