長年利用してきました Excelのマクロ・VBA ですが、近年それに替わる方法に移行しようとする流れが出てきました。
1つの理由として、マクロ・VBAを含む Excelブックを不用意に開いて、情報を搾取したり改竄したりなどされる恐れがあります。
また、そこで使われる Visual Basic言語の仕様が現在の要求に合わなくなっていることも上げられます。
VBAは依然として Excel内でアプリケーションとして動作し、特定の機能や既存の資産を活かす場合には有用です。
しかし、将来的には以下に示す代替技術に移行していく流れがあるため、新しい自動化にはそれらの技術を検討することをお勧めします。
Excel VBAを使わずにプログラムを作成する方法は、目的や求められる機能によって様々な選択肢があります。
Excelの機能を活用する方法から、外部ツールやプログラミング言語を利用する方法まで、以下にいくつか紹介します。
1. Excelの組み込み機能を利用する
簡単な自動化やデータ操作であれば、VBAを使わずに Excelの標準機能だけで実現できます。
- Excelの関数: FILTER、SORT、UNIQUE、LAMBDA などの新しい関数を使えば、データの抽出、並べ替え、重複排除といった操作を自動化できます。
- Power Query: 複数のファイルからのデータ結合や、複雑なデータの整形をノーコードで自動化できます。
- Power Pivot: 大量のデータを扱い、複雑なデータモデルの構築や計算を行うことができます。
- フラッシュフィル: 一定のパターンを学習して、データの入力や整形を自動化する機能です。
- データ検証 (入力規則): セルに入力するデータの形式や範囲を制限することで、入力ミスを防ぐことができます。
- 条件付き書式: 特定の条件に基づいてセルの色や書式を自動的に変更できます。
つまり、やろうとしているデータ操作などの作業が、Excelの標準機能だけでできるか検討することはとても大事です。
2. Microsoftの自動化ツールを利用する
より高度で、Excel以外のアプリケーションとの連携が必要な場合は、Microsoftのサービスを利用します。
- Power Automate (旧:Microsoft Flow): Microsoft Power Platformの一部で、VBAのコードを書くことなく、より広範な自動化を実現できます。
ファイルの移動、メールの送信、複数のアプリケーションをまたいだデータ連携など、幅広い業務プロセスを自動化できます。 - Officeスクリプト(Office Scripts): Excel Online(Web版 Excel)上で、JavaScriptベースのスクリプトを作成・実行できます。
新しいバージョンのデスクトップ版 Excelにも展開されています。
VBAに比べて自由度は低いですが、セキュリティが高く、JavaScriptベースであるため学習のしやすさも期待できます。
3. 外部のプログラミング言語を利用する
Excelを外部から操作する場合、VBA以外のプログラミング言語を使用できます。
- Python: データ分析や機械学習の分野で人気が高く、pandasや openpyxlなどのライブラリを使ってExcelファイルの読み書きや高度なデータ処理が可能です。
- Python in Excel: Pythonの強力なライブラリを活用し、Excelでデータ処理や分析を行う方法です。
- RPAツール(Robotic Process Automation): UiPath や WinActorなど、PC上のあらゆる操作を自動化するツールです。
プログラミングの知識がなくても、視覚的な操作でワークフローを作成できます。
4. 別の表計算ソフトに移行する
VBAの代わりに、他の表計算ソフトの機能やスクリプトを利用する方法です。
- Googleスプレッドシート + Google Apps Script: Googleスプレッドシート上で JavaScriptベースのスクリプトを記述し、Excel VBAと同様の自動化を実現できます。
- LibreOffice Calc: 無料のオフィススイートで、LibreOffice Basicという VBAと互換性のあるマクロ言語を使用できます。
まとめ
どの方法を選ぶべきかは、プログラムで実現したいことによって異なります。
方法 | 主なメリット | こんな人におすすめ |
---|---|---|
Excelの組み込み機能 | 特別なプログラミング知識が不要で、手軽に利用できる | 簡単な定型作業を自動化・効率化したい |
Power Automate / Officeスクリプト | クラウドベースで複数アプリと連携可能。セキュリティも高い | Web版Excelや他のMicrosoft製品と連携して業務を自動化したい |
Python | 高度なデータ処理や分析が可能で、汎用性が高い | 複雑なデータ分析や、Excelの枠を超えたシステム開発をしたい |
RPAツール | コーディング不要で、PC上のあらゆる操作を自動化できる | プログラミングの知識がなくても、業務全体の自動化を進めたい |
他ソフトのスクリプト | 既存のOffice環境に縛られずに、代替手段を利用できる | Google環境など、Excel以外の表計算ソフトを利用したい |
代替を選ぶ際の考慮事項
- 自動化したい作業の内容: VBAは Excel内部の操作が得意ですが、Pythonは Excel外部との連携やデータ分析に強く、Power Automateはクラウドサービスとの連携に適しています。
- プログラミングの知識: Office Scriptsは JavaScriptベースなのでプログラミングの経験があれば導入しやすく、Python in Excelや Power Automateは学習コストはかかりますが、長期的なメリットが大きい可能性があります。
- セキュリティ要件: Office Scriptsはセキュリティを重視しているため、マクロの自由度を制限したい場合に有効です。