スポンサーリンク
VBAでコーディングを行う上で、基本的に知っておくべき内容を紹介します。
もっとも重要な要素はオブジェクトの存在です。このオブジェクトについて解説します。
VBAでコーディングをする際はオブジェクトを知ることが重要です。Excelではワークブック、ワークシート、セルが重要なオブジェクトですが、Outlookでも同じように重要なオブジェクトがあります。それがメールアイテム、ミーティングアイテム、フォルダーオブジェクトです。
前回の内容はこちら。
VBAで意識すべき重要な要素:オブジェクト
Excel VBAでのオブジェクトは、Workbook、Worksheet、Rangeなどがありました。Workbookはエクセルファイル自身を表し、それは複数のWorksheetを持ちます。また、WorksheetはたくさんのCell(別名:Range)をもっています。ここで、より下位のオブジェクトを利用するためには、より上位のオブジェクトから階層的に呼び出す必要がありました。 たとえばWorkbookの中にある一つのWorksheet、さらにその中の特定のセルを利用するためには次のようなコーディングを行います。Public sub main() Dim i as integer Dim ObjWB as Excel.workbook Set ObjWB = Activeworkbook ObjWB.worksheets(1).cells(1,i) = “こんにちは” Set ObjWB = Nothing End sub最初にWorkbookとして、開いているWorkbook(Activeworkbook)を指定し、そこから階層的にシート、セルへと結び付けていきます。 このようにVBAでは、「自分が使いたい要素がどのオブジェクトに紐づいているか」「どのように呼び出すか」を考えることが、その理解を深めます。
VBAでコーディングする際の注意事項
一方で気を付けなければいけないのが、VBAは省略した記載ができる、という事実です。つまり、親オブジェクトの要素を省略した形でコーディングすることができます。実際のコーディング例はこちらです。Public sub main() Dim i as integer i = 1 Cells(1,i) = “こんにちは” End subこの例ではWorkbookも、Worksheetも指定していません。直接Rangeオブジェクト(Cell)に対して値の代入をしていますが、これでもおおよその場合正常に動作します。これは原理を知ったうえで使えば大変便利に使うことができます。開発時のコーディング文字数が相当減ります。しかしこの原理を適切に理解するのはかなり難しいため、エラーの混入の原因になりやすいです。 よってこのようにVBAではいろいろ省略したコーディングが可能ではありますが、できる限り省略しない書き方を心がけてください。
Outlook VBAでも重要なオブジェクトが存在する
Outlookにも同様にオブジェクトが存在していて、これを通じて容易にOutlookの各処理を操作することができます。代表的なオブジェクトを紹介します。こまかな使い方はおいおい紹介します。まずは「そういうオブジェクトがある」ということ、「何か処理をするときにこれらを呼び出すことを意識すればよい」ことを知っておいてください。- MailItem メールをさすオブジェクト
- MeetingItem 会議予定をさすオブジェクト
- TaskItem タスクをさすオブジェクト
- Outlook.folder Outlook内で扱われるフォルダをさすオブジェクト
- ActiveInspector 現在開いているアイテムをさすオブジェクト