VBAでコード解析するツールとは?タイプ別にツールを紹介!


VBAでコードを解析するツールが知りたい・・・
できれば、解析後の結果もわかりやすく見たい・・・

VBAでコードを解析しようとしても、公式のツールはないですよね。ただ、VBAでコードを解析したいと思うタイミングは結構あります。そのため、VBAでコード解析できるツールを知りたい・・・と思う方は結構いるのではないでしょうか。

こんにちは!フリーランスエンジニア兼テックライターのワキザカです。

この記事では、VBAでコード解析するツールをタイプ別に紹介します!

ただ紹介するだけでなく、状況に応じて使い分けられるよう紹介しているので、ぜひ見てみてくださいね!

この記事はこんな人のために書きました。

  • VBAのコード解析ツールを知りたい人
  • VBAでコードを解析する方法を知りたい人

VBAでコード解析ツールを選ぶときの考え方

はじめに、VBAでコード解析ツールを選ぶときの考え方について解説します。

コード解析と一口に言っても、解析方法はさまざまですよね。そのため、用途に応じてコード解析ツールを選ぶことが重要です。

VBAでコード解析を行うときは、次のような用途がありますよね。


■VBAでコード解析するときの理由

  • 開発を進めるために、前のバージョンとの差分が知りたい
  • 既に出来上がったプロジェクトのコードを分析して読み進めたい
  • ExcelからAccessに移行を考えており、工数見積もりのため規模感を知りたい

利用したいシーンによって、必要なツールは全く違います。また、実現したいことがツールとして存在しない場合もあるので、ツール以外の方法を使ったり、別途VBAでツールを作ったほうがいいときもあります。

用途に応じて、それぞれ詳しく解説しますね。

【タイプ別】VBAのコード解析ツールの使い方

次に、3つのタイプに分けてコード解析ツールの使い方をご紹介します。

開発をすすめながら解析したいとき

まずは、開発を進めながら解析したいときです。

大規模なシステムになってくると、1人でコードを書くケースは少ないですよね。誰かが別の機能を作っているというケースの方が多いです。そのため、どんなコードがどこに書かれているか調べる方法を知っておくと便利です。

その方法が、バージョン管理ツールを使う方法です。バージョン管理ツールではGitが有名ですが、Gitと連携してVBAのコードを差分で見ることができる「vbac」があります。連携すると、次のように差分を見れるようになります。


コードの差分

導入方法や連携方法は以下がわかりやすいので、おすすめです。

引用:vbacでエクセルVBAのソースコードをGitバージョン管理する方法 https://tonari-it.com/vba-vbac-git/

ちなみに、Gitって何?という方は、以下を見てみてくださいね!

【Git入門!】Gitって何?から基本的な使い方までを簡単解説
更新日 : 2019年7月19日

出来上がったコードを読むために解析したいとき

次は、「出来上がったコードを読むために解析したいとき」についてです。

結論から言うと、見やすい解析ができるツールはありません。そのため、コードを読むときのテクニックを覚えておくことがおすすめです。


■コードを読む時のテクニック

  • テクニック1:右クリック + ショートカットキーで定義に移動・戻るを高速化
  • テクニック2:ステップ実行を覚えてデバッグを高速化
  • テクニック3:イミディエイトウィンドウを使いこなして値の確認を高速化

VBAのコードウィンドウで右クリック + Dで定義に移動、右クリック + Nで定義に戻ることができます。サブシージャや関数が多いコードの場合は、このショートカットキーを覚えるだけでも高速化することができます。

また、ステップイン、ステップオーバーなどステップ実行を徹底的に覚えたり、イミディエイトウィンドウで変数の値を確認できるようになると、コードを速く読めるようになります。ちょっとした事の積み重ねで速くできるので、とてもおすすめです。

デバッグ方法、イミディエイトウィンドウの使い方については以下で詳しく解説しています。自信がない方は、以下を見てみることがおすすめです!

【ExcelVBA入門】VBAでデバッグするための方法とは?
更新日 : 2018年12月5日
【ExcelVBA入門】デバッグに使うイミディエイトウィンドウとは?
更新日 : 2019年4月15日

全体の規模感がわかるように情報をまとめたいとき

次が、「全体の規模感がわかるように情報をまとめたいとき」についてです。

こちらもツールとして良いものはないですが、地道に調べるととても時間がかかってしまいます。そんなときは、VBAでモジュール名、プロシージャ名、モジュールごとの総行数、全体の行数などを出力するコードを自作することがおすすめです!

言葉だけだとわかりづらいので、サンプルコードを用意しました。

実行前:

実行前のExcel

サンプルコード:

実行結果:

実行後のExcel

コードが長いので、1つずつ解説しますね。

まず、以下のコードでブックのプロシージャ数を取得しています。

このあと、モジュール数分処理をループしています。そのループ処理の中で、コードの行数文次のようにループ処理をしています。

さらに、このループ処理の中でプロシージャ名があった場合は取得し、その名前を使ってコード数を取得しています。

取得した値を使って、次のように詳細データをセルに書き込んでいます。

また、最後にサマリーデータを計算するためにプロシージャ総数、コード総数をループ処理の中で見つかった数分足していく処理を書いています。

最後に、ループ処理を抜けた後で以下のようにサマリーデータを書き込む処理を書いてます。

ExcelからAccessにコードを移行するようなケースだと、VBAの規模感を知りたいときに便利ですよね。サマリーデータ、詳細データがあれば見積りもしやすくなるのではないでしょうか。

サンプルコードは、実行前・後の画像のような「分析結果一覧」シートを作成すれば実行できるので、ぜひ動かしてみてくださいね!

VBAでコード解析するときに大事なこと

ここまで、用途に応じたコード解析方法についてご紹介しました。

重要なのは、「コード解析ツールを探すこと」ではなく、「解析して何を実現したいか」です。

ツールを使えば便利に解析できることもありますが、無い時は諦めるのではなく、

  • 作業スピードをあげられないか?
  • ツールを自作して実現できないか?

と考え、思考を巡らしていくことが重要です。

ツールを一度作ることで今後作業が簡略化されるのであれば作るべきですし、滅多にない作業であれば、いっそのこと手作業でそのまま終わらせてしまうことも一つの手です。これがいい!と固定概念に捕らわれずに、本質を見極めることが重要です。

まとめ

今回は、VBAでコード解析できるツール・用途別の解析方法について解説しました。

最後にお伝えしたように「ツールを探すこと」を目的にするのではなく、「最適な方法を探すこと」が重要です。

ぜひ、用途に応じて解析方法を身に着けてくださいね!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

フリーランスエンジニア兼ライターのワキザカ サンシロウです。
ExcelVBAの自動化ツール開発、WEB開発をメインにエンジニア業務をこなしつつ、サムライエンジニアにてライター業務をしております。

プログラミングをこれからやってみたい方に向けて、ためになる記事を全力で書いていきますので宜しくお願い致します!

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説