ゆんの業務改善ブログ

①生産性向上 ②業務改善 ③自動化 について情報発信しています。VBAプログラムは本当の初心者から他のアプリケーションを呼び出して使う上級者的な使い方まで幅広いレベルで解説していきます。

VBA スニペットで開発効率を向上する|ファイルのエクスポートとインポート

VBAで自動化ツールを作成している人向けにプログラミング自体を効率化する方法としてスニペットという考え方を解説します。

目次

VBA スニペットで開発効率を向上する

スニペットとは

スニペットとはプログラミングを記述するための統合開発環境の機能で、よく使うプログラムの塊を呼び出す機能のことです。統合開発環境というのはプログラムを記述するエディタや入力補助機能、スペルミスをチェックする機能などプログラミングを行うために必要な様々な機能が揃った開発環境のことです。

このプログラムの塊を呼び出す呼び出す機能のこともスニペットと呼びますし、呼び出されるプログラムのこともスニペットと言います。

スニペットを使うと言うことは、同じようなコードを始めから書く必要が無いと言う事なので直接的にプログラミングの効率向上の効果があります。

VBAにおけるスニペット

VBAにおける統合開発環境はVBEです。そしてVBEにスニペットの機能はありません。VBEやエクセルのアプリケーション自体がプログラムの塊を記録しているわけではないからです。しかし、スニペットと同様の事ができます。それはファイルのエクスポート機能とファイルのインポート機能です。

ファイルのエクスポートとインポート

ファイルのエクスポートとはVBAのプログラムをモジュールごとバイナリファイル*1にして保存することです。こうしてエクスポートしたファイルをインポートする事によってそのモジュールをエクセルマクロブックに取り込み、利用することができます。

エクスポートの方法は、エクスポートしたいモジュールを選択した状態で右クリック⇒ファイルのエクスポートです。

一方、エクスポートしたスニペットをモジュールに取り込むのがインポートです。こちらも方法は簡単で、プロジェクトエクスプローラーの上で右クリック⇒ファイルのインポートです。

VBAにおけるスニペットの特に有効な使い所

VBAの一つの特徴的なモジュールとしてシートモジュールとフォームモジュールがあります。これらはワークシート、ユーザーフォームというオブジェクトとそれぞれ一体になっています。そして、シートモジュールやフォームモジュールをインポートするとそのシートやユーザーフォームも同時にインポートされます。

ユーザーが値を入力したり選択肢から選んだりするユーザーフォームは、ユーザーフォームの設計とプログラミングの両方を行わなくてはならないため非常に手間が掛かります。もし似たようなプログラムを作る予定があるのであれば、少しの修正だけで使える様な汎用的なフォームにしておくことで、大幅にツール作成の手間を省くことができます。

スニペットにする事を前提にプログラムを作成する

VBAで自動化ツールを作成していると、加工する元データのエクセルファイルをユーザーに選択させたり、もとのファイル名に本日の日付を追加して保存して閉じると言った様な毎回似たようなプログラムが出てきます。似たようなプログラムですが全く同じではありません。つまりスニペットもまるっきりそのまま流用するわけではなく、多少の修正を加えて利用する事になります。

そのため、多少の修正がある事を前提に使い回しがしやすいようにスニペットを作成する必要があります。プログラムの中にはリテラル*2を極力含ませず、定数を冒頭で宣言したり、コメントを入れて修正箇所が分かりやすい様にしておきます。定数を冒頭で宣言することによって処理の中身自体は修正せずに冒頭のリテラル部分だけを修正すれば良くなり、使い回しがしやすくなります。

このように使い回しがしやすいスニペットは将来にわたって開発効率の向上に寄与するので貴重な資産となります。過去のプログラムは資産である、と言うような言い方をする場合があります。単に過去に作成したツールを保管しておくだけでなく、スニペットとして使いやすい形に残しておくからこそ価値の高い資産であると言えます。

このように、後の開発効率の向上まで見据えた開発ができれば脱初心者レベルにあると言えるでしょう。

VBA スニペットで開発効率を向上するファイルのエクスポートとインポートまとめ

この記事の内容をまとめます。

  • スニペットとは使い回しをする為のプログラム、またはそれを呼び出す統合開発環境の機能
  • VBEにはスニペットを保存する機能は無いが、インポートとエクスポートを使ってスニペットを利用できる
  • 使い回しがしやすいように作られたスニペットは価値ある資産である

開発効率がよく、メンテンナンス性に優れたVBAプログラム処理の流れをさらに深く知りたい方は、関連記事のリンクをご覧ください。それでは頑張っていきましょう!

<関連記事>

*1:テキストファイル以外のファイルのこと。メモ帳として開こうとすると文字化けしたりそもそも開けなかったりするファイルすべて。PDFもエクセルブックもバイナリファイル。

*2:特定の文字列や数値のこと。メンテナンスの時になぜその値が使われているのかが分かりづらく、避けることが好ましい場合が多い。ベタ打ちの値。