スキップしてメイン コンテンツに移動

投稿

VBAの活用はExcelだけなのか

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であっても、今時の記述方法といいますか、プログラムやデータをオブジェクトとして扱い、それをまとめて処理したりとか、リアルタイムで入力チェックしたり、といったことが実はできます。 しかし「それを書いてはいけない」のです。 なぜ?と思われるでしょうが、VBAの場合すぐにリソース不足を起こしてしまうためです。 (リソース不足に陥り安い例) まず、リアルタイムで入力した情報をチェックするようなプログラムを書いていくと、きまってリソース不足のエラー画面が表示されます。 また、画面の部品を一個ずつ指定せずに、同様なものをFor Eachなどのルーチーンで回しながら扱いたい、といった場合、コンストラクターというオブジェクトに複数オブジェクト(画面のコントロールなど)をまとめて登録し、コンストラクターから取り出しながら、処理すると非常に簡潔に処理がかけるのですが、そのような処理を書いたとたん「オートメーションエラー」という、リソース不足からくるエラーがすぐに出てきてしまいます。 (対処方法) 対処方法としては、DoEventsという、処理をOSに渡すということが一般には言われますが、そ言う簡単にはいきません。 基本、リソース不足を起こす記述はしないということに尽きるかと思います。 「キー入力と同時の処理は極力さけ、入力値のチェックは別のタイミングで行う」 「繰り返し処理、特にオブジェクトのコンストラクターでの繰り返し処理は絶対に書かない」 というものになります。 具体的には、後者であれば、処理の中で全ての部品を並べて書いたり、それが無理な場合には、値を配列に入れて回す、もしくは対応した番号をもとに分岐するCASE分を作り、それぞれに処理を記述したりします(同じような処理が複数できてしまいますが)。 次回は、この後者の例を書きたいと思います。

モバ造がVBAにはまった理由

皆さんこんにちは。モバ造です。 ちょっと仕事でVBAを使っているうちに、VBAにどハマりしてしまい、このブログを書いてみることにしました。 (なぜVBAにハマったのか) というのも最近は仕事を短時間で終わらせることが求められいる一方で、普通に作業を効率的にやっていくといってもかなり限界があり、逆に仕事が増える一方になってしまっています。 そんななか、ルーチーンを回したり、効率的に集計したり、はたまた誤り無くコミュニケーションする上では、ノウハウや処理をプログラムに置き替えるしか方法がなくなってきています。仕事を自動化して1分でも1秒効率的に仕事を回したい。そんな感じです。 そんなとき、普段使うExcelやOutlook上で簡単にプログラムでき、処理を自動化できるVBA(Visusal Basic for Application)が非常に役に立つことがわかり少しづつ自動化していくうちに、本格的に使い出してしまった、というのが現状です。 (VBAとは) VBAって何?という人もいるかと思いますが、簡単に言えば、「ExcelやOutlookなどのOfficeアプリケーションを使って簡単にプログラムが書ける環境」という感じでしょうか。 VBAは「Visual Basic for Application」の略なわけですから、Visual Basicという「プログラミング言語」ということになるのかもしれません。 しかしここで「環境」と書いたのは、VBAの特徴としては、開発のための「環境」を構築する必要はなく、Officeがインストールされていれば、誰でも簡単に作れるようになっています。「VBA」のこの特徴こそ使い勝手のよさにつながっており、そのためVBAを「環境」と呼んでいるわけです。 (VBAのデメリット) そういうことでVBAはお手軽に仕事を効率化できるツールになるわけですが、ただ、このVBA、非常に癖のあるものになっています。 VBAの使い方については、インターネットに非常に多くの情報が掲載されており、検索しながらプログラムを書いていくのは非常に容易です。一方、そのため設計なしでどんどん書いていくうちに、俗にいう「スパゲッティ」プログラム(ぐちゃぐちゃで修正もできないプログラムのことですね)ができあがってしまいます。 また、