マクロ(VBA)は、古い技術と見なされることもありますが、実際にはまだ企業で使われていたり、これから学びたいという人がまだ存在します。
それとは逆に、以下のように嫌がられることもあります。
- マクロを使うと嫌われる
- マクロを使うのはやめてほしい
- マクロを禁止している会社や部署もある
VBAでの作業は業務の効率化ができるのは事実ですが、場合によっては逆に非効率になることもあります。
また、マクロを利用することにはリスクも伴います。セキュリティや業務の一貫性を確保するため、一部の企業ではマクロの使用を制限しています。
最近はAI利用でコードを簡単に作成できることもありますが、複雑なコードは厳しいです。
私自身もVBAを使った業務に携わった経験があり、マクロの影響や問題点を実感してきました。
この記事は、なぜ企業がマクロの使用を制限するのか、その理由や現状についてまとめました。
そもそもVBAとは?マクロとは違うの?
まずはじめに、VBAとマクロとは何かについてです。
VBA(Visual Basic for Applications)は、Microsoftが開発した、Office製品内で使われるプログラミング言語です。ExcelやAccess、WordなどのOfficeアプリケーション内でVBAを使うことで、自動化や業務効率化が可能です。
VBAってプログラミング言語じゃないって本当?
VBAはプログラミング言語です。
プログラミング言語とは、コンピュータに対して何らかの処理を行うために使われる言語で、コンピュータが理解できる形式に翻訳されます。
VBAは、Visual Basic言語を基礎としており、Officeアプリケーションの操作や、自動化などのために使われるプログラミング言語です。
ただし、VBAはC++やJavaなどの一般的なプログラミング言語と比較すると、構文が簡単で、学習しやすいとされています。また、VBAは、エクセルやアクセスといったビジネスアプリケーションとの親和性が高く、利用価値が非常に高い言語と言えます。
VBAはプログラミング言語じゃないと言われる理由
一部の人々がVBAをプログラミング言語ではないと考える理由は、VBAが標準のプログラミング言語のように独立して存在するわけではなく、Microsoft Officeアプリケーションに組み込まれていることが挙げられます。
また、VBAは専用の開発環境(Visual Basic Editor)を持っているため、一般的なプログラミング言語のようなコンパイラやIDE(統合開発環境)を使用しないことがあります。
しかし、VBAは、データ型、変数、制御構造、関数、サブルーチンなど、標準的なプログラミング言語に必要な基本的な機能を備えています。
マクロとは
マクロとは、VBAを使って記録した操作の手順を自動化する機能のことです。
ExcelやWordなどのOfficeアプリケーションで、特定の手順を繰り返す必要がある場合、その手順を一度記録しておくことで、後から同じ手順を再現することができます。
VBAとマクロは密接に関連しており、VBAを使ってマクロを作成することができます。ただし、VBAはプログラミング言語であり、マクロよりもより高度な処理や複雑な機能を実現することができます。
マクロを許可している会社
私が最後にVBAの専門として働いていたのは、2021年春から約1年でした。
その企業で作成したVBAツールは、外部に専門のシステムを作ってもらうレベルでした。大量なデータと複雑な計算が必要でした。高速化でのコードでも、作成したVBAツールを実行すると、終了まで1日かかるものもありました。
なぜ、VBAで作成の依頼があったのかは、おそらく予算の問題が一番でしょう。
その他の会社では、VBAの専門で働いたわけではなくても、既にある修正等を行うことはあります。また、自分の作業で一般機能では対応しきれない場合は、許可をとってVBAを使うこともあります。
しかし、私はVBAの専門で雇われたわけではない限り、自分の作ったコードは削除して辞めます。それは、誰かに引継ぎができる処理をしていないし、もしエラー処理等や説明マニュアル作成をすると、その分時間もかかります。
マクロを使うのを嫌がる会社や禁止にしている会社
まだ私が20代後半から30代はじめの頃は、マクロウィルスという問題はなく、業務で使うことがよくありました。マクロが問題と言われ始めたからも、まだVBAを使う会社は意外とあります。
2021年春、まだVBA専門の仕事があることに私自身が驚きました。
会社によってはマクロ禁止であったり、上司がマクロ嫌いだったりすることもあります。以下は一例です。
所属長がマクロ禁止派だった
最近まで働いていた会社の所属長が、マクロに否定的な方でした。
否定していた理由は、辞めた社員が残した「マクロが組まれた大量のエクセル」に困っていたためでした。私はシステムのデータ移行の業務で働くことになったのですが、スキマ時間にその社員が残したマクロの解読と修正作業をすることになりました。エクセルの一般機能で十分対応可能であるものが多く含まれていました。
このようなことは、今までに何度も経験してきましたが、自分でコードをはじめから考えるより、人の作成したマクロの解読の方が大変です。
パスワード設定していても、解除できる(マクロで)のですが、解除後にコードを見て驚くこともあります。それは、一般機能でよくないか?というマクロだったから。
原則VBA禁止の会社
2016年に退職した会社なので、かなり昔です。当時、私は情報システム部門に所属していて、会社全体に対し、上司がVBAの使用を禁止していました。
VBAを必要とする場合は、事前に許可を得る必要がありました。私はシステム部門所属にも関わらず、部署内でのアクセスでの作業にVBAがどうしても必要だったため、上司から許可を得ました。
VBAが禁止された理由は、当時セキュリティ上の懸念が高まっていた時期であり、VBAがプログラミング言語であるため、その影響も考慮されていました。
VBAのメリット・デメリット
メリット | デメリット |
---|---|
初心者でも簡単に学びやすい 学習に必要な環境構築が簡単 業務で活用しやすい 追加のコストがかからない | 大規模なプログラム開発には向かない バックアップ管理やバージョン管理が複雑 基本的なアルゴリズムの理解が欠ける 他のプラットフォームで使用することができない |
エクセルマクロが迷惑になる場合
職場での許可を得て、自分の作業効率化でVBAを使うのはありだと思います。
困るエクセルマクロ
許可も得ておらず作られたエクセルVBAを他の社員にも使わせている、というのは問題があります。その社員が辞めた後に、実行中にデバック画面でどうしていいかわからず、何の作業かもわからず、困って相談されたことは何度もあります。
作成した社員がまだ在籍していても問題になったこともありました。VBA専門で雇われていた時、他の支店の社員が作成したマクロを参考にして、と言われエクセルを渡されたことがありました。一切の質問は受け付けません、とも言われていました。どうなったかというと、大量にエラーが起こったのですが、解読が大変で手に負えませんでした。結局そのマクロは参考にしませんでした。
エクセルマクロ職人
エクセルマクロ職人は、エクセルだけでなく、あらゆる関数を使って複雑な設定してしまう人のことですが、このような人が問題になることもあります。
なぜこのようなエクセルの達人がいるのか、私自身が経験していることがあります。初めてエクセルを使ったとき、複雑な関数やVBAを使って処理を自動化するのが楽しかったです。さらに高度な機能に挑戦したり、没頭したりすることもありました。しかし、今振り返ると、周囲に迷惑をかけていたし、恥ずかしいと感じます。
まとめ
マクロは業務の効率化に貢献する一方で、簡単に使えるというメリットが裏目に出ることがあります。
知識の不足などで作成されたマクロは、後から解読や修正が難しくなる可能性があります。業務の観点から解読にかかる時間などを考慮すると、一般的な機能を使用した方が効率的であることもよくあります。マクロを始めたばかりの人は、楽しくて簡単なことでもコードを作りたくなるかもしれませんが、その後の問題に繋がることもあります。
セキュリティの面も不安です。マクロを使うことで、不正なコードが実行されるリスクが存在します。特に企業や組織では、セキュリティ上の懸念からマクロの使用を制限するケースが見られます。
私個人の意見としては、基本のアルゴリズムを理解した上で、本当にVBAを使わないと大変な作業で、コード作成が簡単にできる人が使い、作成したマクロは他の人に引き継がず、一般機能で対応できるように残す方がよいと考えます。
引き継がない方が良い、についてもう少し補足します。もし引継ぎをする場合、エラー対応が必要になります。第三者が使用する場合、自分では予想していなかった使い方をすることはよくありました。エラー対応しきれない場合もあります。
業務に不可欠な場合や特定の要件を満たす必要がある場合を除き、セキュリティやメンテナンスの観点から慎重に検討すべきでしょう。