そう思った理由は、以前とあるSNSのコミュニティにて"MS Excel""MS Access"の話題でとある人の「VBAできるといいのかな?」と発言から「VBAの仕組みは~」や「こんなマクロを作ったことがある」と話している中で、ある方が
「そんなのC言語でやればいいじゃん」
という発言をされる方がいました。続けて他の方
「JAVAで作れば余裕だよ」
と別の方が発言されたことから私は
「確かにC言語やJAVAでも可能でしょうが、今はExcelやAccessで使うVBAの話ですよ」
と返しましたら
「VBAしか出来ない奴にロクな奴はいないよ」
や
「その程度で語らないでくれるかな?」
という発言が続き、私はその話題から離れました。
今の仕事も"MS Excel"や"MS Access"でVBAを用いますが、自分は「プログラマー」と思わいませんし、人から「プログラマーですか?」と聞かれても「そんな大層な者ではありません。」と答えています。
余計な感情部分を入れて申し訳ございません。本題に戻りますが、
C言語やJAVA言語を使う人から見て、"MS Excel"や"MS Access"でVBAは無用の長物なのでしょうか?
C言語、C++組んで20年になります。
プログラム嚙り始めの人ほど、そう言うんですよ。
VBAはインタープリターなので速度の求められる処理には使いませんが、簡単な業務アプリも組んだりしてます。
言語やフレームワークには適材適所があるので
そのときの作ろうとする対象がCやJavaのほうが適したものだったか
話の流れが読めない人だったのでしょう、
「Excelのブックを生成する」というような仕事にCやJavaを使うのは無駄ですし、OS操作やJavaで便利なライブラリが提供されているものにVBAを使うの無駄でしょう。しかしながら仕事となると環境やコストの問題でベストの選択ができることは少ないと思います。
VBAの強みの一つは、オフィスならほぼ100%、一般家庭でもかなりの割合でインストール済みなので環境を選ばないところかとおもいます。
Javaはランタイムのインストールが要りますし、CはWindowsの場合開発環境の準備(と維持)が必要です。
私はプログラマをやっていますが
VBAはライブラリを使う言語として優秀で完成されていますしクライアントPCでOffice製品を操作するには今の所最適解だと思っています。
(サーバサイドで動かす場合はコストをかけても別の手段を検討します)
ご回答ありがとうございます。
それぞれに強みや弱みがあり用途としてはそれぞれに適材適所がある、という説明していただき嬉しく感じます。
全てがCやJAVAで出来て当然のような言われ方がとても辛かったです。
未だに私は「プログラマー」と呼べないですが、VBAでは色々とアプリケーションを提供してきました。それは今の仕事でも同じです。
求められるから望まれるとおりに作る、ただそれでだけです。
C言語やJAVA言語を使う人から見ても、
"MS Excel"や"MS Access"のVBAは有用なツールですよ。
Microsoft Officeに最初からVBAが入っているから、
ちょっとVBAでマクロを作ろう、という類のものですよ。
普通はコンパイラ環境であるC言語やJavaと、
特定アプリ用ツールのVBAを比較する人がいるならば、
それは恐らく同じ背景で議論していないと思います。
ご回答ありがとうございます。
確かにjan8さんの仰られるように同じ背景で議論してはいなかったです。その方々は「自分のほうが最も有用な言語を使いこなしている。」と言った感じでした。
なので有用なツールと言っていただけるのは嬉しいです。
VBAは無用とか,XX言語は無用,と考えるのはもったいないと思います
私はC言語もJAVA言語もVBAも業務で使っていますが
長所短所を理解したうえで上手く組み合わせる事が一番大事だと思います
例えば,文字列処理とか日付計算はC言語やJAVAで書くと結構面倒ですが
エクセル + VBAなら簡単です
VBAで処理速度が問題になる場合は,まず Excel 上で日付等の計算をして,結果をCSV形式のファイルで出力するVBAというかマクロを書いて,あとは C/C++ で CSVのファイルを読み込む,という感じでC言語とVBAを連携させます
ご回答、ありがとうございます。
2015/12/01 22:58:35Vacuumさんのお言葉に、当時の方がプログラム嚙り始めの人がどうかはわかりませんが、使い始めた時に「一番使える」と思って発言されたと思いました。感謝しあmす。
確かに速度を求める処理に対してVBAは向いていないですね。業務系アプリもありますが、電気計測でロガー代わりにアプリを組むことはありました。