VBAの利用はExcelでの活用がメインですが、Outlookでも様々に活用することができます。 (Excelでの活用) インターネット上のVBAの活用の例で多くみられるのがExcelでの活用です。 Excelの場合、多くのデータが格納されるため、それらのデータ処理にプログラムとなるVBA(マクロ)が有効となる場合が多くあります。 また、Excelの場合、方眼紙的な使い方とも揶揄される、情報の入力フォーマットとして使われることも多く、それらを取りまとめて集計する、という点でもVBAの活用は有効でしょう。 ただ、Excelで活用していく場合には、Excel自身での様々な集計機能等をもっていますので、先にあげたリソース切れの問題もありますので、Excel自身の集計機能等と組み合わせながらVBAを使っていくことを考えた方がよさそうです。 (Outlookでの活用) 一方で、マイナーではありますが、OutlookでもVBAは利用できます。Outlookはメーラとして、送受信やメールの生成などでVBAを活用することで、より便利にOutlookを利用することができます。 というより、Outlookは企業向けメーラとして提供されている一方で、「組織」の概念が希薄なため、仕事での利用するには、様々な面で相入れない点が多いということに、多くの人が気づいていないところがあります。 OutlookでのVBA活用は、組織での利用をサポートする上でも必要ではないかと考えています。 (今後の取り組み) 今後は、Excelでの活用や、Outlookでの活用、ExcelとOutlookでの相互利用などに焦点をあてていきたいと思います。 今後の励みになりますので、皆様のコメントをお待ちしています。
VBAを使いこなしていく上で重要なことは「決して高度な使い方をしてはいけない」ということです。 え?という感じでしょうが、使っていくうちに、よりいろいろな機能を盛り込んでいくことになり、また複雑にならないよう、より簡潔に書く方法を探すことになります。 そうするとVBAであっても、今時の記述方法といいますか、プログラムやデータをオブジェクトとして扱い、それをまとめて処理したりとか、リアルタイムで入力チェックしたり、といったことが実はできます。 しかし「それを書いてはいけない」のです。 なぜ?と思われるでしょうが、VBAの場合すぐにリソース不足を起こしてしまうためです。 (リソース不足に陥り安い例) まず、リアルタイムで入力した情報をチェックするようなプログラムを書いていくと、きまってリソース不足のエラー画面が表示されます。 また、画面の部品を一個ずつ指定せずに、同様なものをFor Eachなどのルーチーンで回しながら扱いたい、といった場合、コンストラクターというオブジェクトに複数オブジェクト(画面のコントロールなど)をまとめて登録し、コンストラクターから取り出しながら、処理すると非常に簡潔に処理がかけるのですが、そのような処理を書いたとたん「オートメーションエラー」という、リソース不足からくるエラーがすぐに出てきてしまいます。 (対処方法) 対処方法としては、DoEventsという、処理をOSに渡すということが一般には言われますが、そ言う簡単にはいきません。 基本、リソース不足を起こす記述はしないということに尽きるかと思います。 「キー入力と同時の処理は極力さけ、入力値のチェックは別のタイミングで行う」 「繰り返し処理、特にオブジェクトのコンストラクターでの繰り返し処理は絶対に書かない」 というものになります。 具体的には、後者であれば、処理の中で全ての部品を並べて書いたり、それが無理な場合には、値を配列に入れて回す、もしくは対応した番号をもとに分岐するCASE分を作り、それぞれに処理を記述したりします(同じような処理が複数できてしまいますが)。 次回は、この後者の例を書きたいと思います。