プログラミング

結局VBAは悪なのか

イノ
記事内に商品プロモーションを含む場合があります

ネットで何年も議論され続けているVBAは使って良いのか問題。私の会社でもVBAを作り続けるVBAおじさんと、やめろと言い続けるSEが存在します。VBAは使っても良いのか私なりの意見を述べようと思います。

結論:使い方による

いきなり結論から言いますが、私は使い方によると思います。

私が個人的に使って良いと思う条件は、個人の業務の範囲かつVBAが使えなくなっても問題ない場合のみです。

毎朝エクセルで色分けする業務があるけど、面倒だからVBA書く。でも他の人には使わせないし、マニュアルとしては手作業を前提にするような場合はOKです。

逆に、部署にいるVBAを作り続けている人、通称VBAおじさんが「君たちの業務大変そうだね。全部VBAで自動化するよ」とするのはNGだということです。

VBAを広く使ってはいけない理由

では何故個人の業務かつVBAが使えなくなっても問題がない場合を除いて使うべきではないのか、個人的な考えを述べていきます。

後継者がいない

最初に後継者がいないことが理由に挙げられます。私は大学を2023年に卒業しましたが、その時代には情報科の人たちはVBAを全く使わなかったようです。

大学で習わない=これからの時代、エンジニアはVBAを扱えない ということです。

社内の業務をVBAで作るのは、新しいシステムをCOBOLで作るようなものなんです。

バグが多い

VBAは、今まで普通に使えていたのに、ある日突然使えなくなることが多いです。

考えてみれば単純な話で、一般的なプログラムは、データベースの決まった列にしかアクセスできないアプリからデータを入力し、それをPythonなどで処理する一方で、VBAの場合どこにでも入力可能なエクセルのセルに数値を入力するのですから、ヒューマンエラーが起こればプログラムはすぐに停止します。

また、VBAをある程度使った人にはわかると思いますが、何故かフリーズした経験もあると思います。

こういったバグの多さから、重要な業務においてVBAを必須とするようなシステムは控えるべきです。

そもそも複雑な処理は想定されていない

VBAおじさんが近くにいる人は経験があると思いますが、社内10以上のエクセルファイルからデータを読み取ってリストを作るプログラムを書くような人がいます。しかし、そんな使い方VBAを作った人は想定していないでしょう。せいぜいファイル3つくらいだと思います。

ネットでVBA肯定派の人たちは、周りにこういったVBAおじさんがいないんだろうと思っています。おそらく肯定派の人も「毎日、10枚のエクセルファイルからリストを作ってもよいか」と聞かれると、否と答えるでしょう。

10ファイルの中のセルが一つズレているだけで止まりますし、そもそもVBAは重い処理をするとフリーズします。

余談ですが、私の会社のVBAおじさんが上記のようなのを作り出したので、「それは流石にやめてください。僕、MySQL使えるんでそっちをベースに作りましょ!」と言っても「まいえすきゅーえる? ナンダソリャ」ってかんじで結局VBAで作ってしまって会社は大混乱に陥りました。それでも「自分が作ったプログラム使ってネッ!」という調子なので困ってます。間違って消しちゃったーとか言って誰か消してくれないかな。

VBAが嫌われる理由

VBAは何故エンジニアに嫌われるのだろうか。フリーズするから!?計算が遅いから!?などなど考えられますが一番はこれだと思います。

VBA使っている人がコード書くの下手すぎ、せめてマニュアルくらい書け

エンジニアの多くはVBAよりも先にPythonやJavaを勉強されている方がほとんどだと思います。そういった言語を扱った人がVBAを使ってみると、「個人の業務の範囲で使うようなもの」だと認識すると思います。

そして、なんでもかんでもVBAで作ろうとする人は「エクセルにVBAってあるらしい。これで俺もプログラマーになる」という人が多いかと思います。そういった人は計算の速いPythonやブラウザで処理するJavaScriptなどの存在を知らないので、なんでもかんでもVBAで作ろうとするのです。プログラミングの勉強をしていないのですから、インデントの揃え方も変数の決め方も、ましてやユーザー定義関数も知らないのです。

そんな人たちが多く使う言語なので、コードは雑、マニュアルも無いようなものばかり出来上がるのです。「俺はどうしてもVBAを使いたいんだ」という方がいたら、コードの書き方や他の言語の特長を知った上で使ってください(その頃にはVBAを使わなくなっていると思いますが)。

個人の業務の範囲かつ止まっても手作業でできる場合のみOK

以上を踏まえ、私は個人の業務の範囲かつプログラムが止まっても手作業でできる場合のみOKとしました。

VBAはエクセルさえあれば誰でも始められるのが良いところです。プログラミングを扱わない人がPythonをインストールして環境変数を当てて、Eclipseのデバッグ環境を構築するのは難しいと思うので、自分の業務を効率化するのに一部VBAを活用するのはむしろ良いと思います。

A列に重要と書かれていたらその行をグレーにするという業務の場合、10行くらいVBAを書けば一瞬で終わるので、そういった場合に使うのは良いと思います(部下への引き継ぎで、VBA走らせたら良いと言うのはNG。しっかり業務内容を説明するのは必要)。

VBAに限らず、プログラムを作る際は、先のことも考えて作るようにしていきましょう。

おすすめ記事

ABOUT ME
イノ
イノ
一応ギタリスト
写真撮って旅してギター弾いて機械弄る人。 串カツが好物
記事URLをコピーしました