OutlookでVBAを利用するにあたり、いくつか初期設定をしておくとよいことがあるので記載しておく。設定すべき理由は合わせて書いておくので、必要かどうかはご自身で判断すること。
1.ルール機能でのマクロ実行の許可設定
1.1 概要
Microsoft Office Outlookでは、VBAを使わずともある程度の自動化が実現できるようになっています。その実現方法の一つが、ルール機能です。
このルール機能を使えば、特定の差出人からのメールを受信した際に、受信したメールを指定のフォルダに格納する、といった作業を自動実施できるようになります。これはただの一つの例に過ぎず、「①いつ」「②何をするか」とUIベースで指定をすることで様々な処理を容易に自動化できるわけ。
しかし、基本的にワンタッチでで指定できる内容は、最初から登録されている内容だけになってしまいます。そうすると1.Outlookでマクロを使うで書いたように、痒いところに手が届かない!ということになってしまいます。
ここでVBAの登場です。「②何をするか」に対してVBAで作成したスクリプトを指定することで、痒い所に手が届く自動化を実現しようというわけです。
ですが、最新のOutlookではこのようにVBAを使うことをセキュリティの観点から推奨していないようで、初期設定では利用できない状態になっているため、設定を変更することで利用可能にしよう、というわけです。
1.2 ルール以外からのVBAは利用可能です
ちなみにルールから実行する、以外にもマクロを実行する方法はあります。VBAを触ったことがある方ならわかると思いますが、マクロは、「イベントとしての実行」や、「手動実行」ができます。なのでこの設定(ルール機能から実行するための設定)は必ずしもしなくても問題ないです。
1.3 自己責任でお願いしますね!
逆に、この設定をすることでOutlookの動作が不安定になったりセキュリティに対する感度が下がってしまうことも考えられます、また設定にはWindowsのレジストリ設定を触ることになります。Windowsシステムの根幹部分に手が加わるので間違えると、Windowsが使えなくなってしまう可能性もあるので、これらの操作は必ず自己責任で実施するようにしてください。
1.4 設定方法
- デスクトップ上で、Winキー + R を同時押して、「ファイル名を指定して実行」ウインドウが表示されることを確認する。
- 「名前:」のテキストボックスに、”regedit”と入力し、「OK」を押下する。
- 「レジストリ エディター」の運動が表示されたことを確認する。
- 左ペインのフォルダ選択みたいなエリアから次の階層を選択する。
「コンピューター\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Outlook\Security」
- 右ペインに表示された「EnableUnsafeClientMailRules」をダブルクリックし、値のデータを”1”に変更する。
- OKを押下すると、「DWORD値の編集」画面が閉じるので次いで、「レジストリエディター」の画面も閉じる。
1.5 設定できたことの確認
- Outlookの画面を開く。
- ツールバーから、ルールを押下し、次いで「仕訳ルールの作成」を押下する。
下図、赤線で囲った部分。
- 「仕訳ルールの作成」ウインドウが開くので「詳細オプション」ボタンを押下する。
- チェックボックスを特に入れず、「次へ」を押下する。
- 「この仕訳ルールはすべての(受信メッセージ)に適用されます。よろしいですか?」と聞かれるが、よろしいので、「はい」を押下。
- すると、「メッセージに対する処理を選択してください」と表示されると思うので、数あるチェックボックスのリストを下にスクロールして、最後のほうに「スクリプトを実行する」が表示されていることを確認する。
- 「キャンセル」で画面を閉じる。
1.6 最後に
1.5-6で確認をした「スクリプトを実行する」こそがルール機能からマクロを実行する際に指定する項目になる。これを選択すると、作成したマクロのうちどのマクロを実行するかを聞いてくるので、実行したいマクロを選択することになります。
2.VBAエディタで変数の宣言を強制する
2.1 概要
OutlookVBAでプログラミングをする際に利用する変数に対して、事前の宣言をすることを強制します。
当然ですがこの設定をすると、事前に変数の宣言をしない場合は、エラーとなりマクロを実行できなくなります。
2.2変数を宣言することの重要性について
プログラミングをしていると、変数を使います。変数は事前に宣言することができます。事前に宣言しておくことで、変数候補として表示されるなど、快適な開発ができるようになります。
また、間違った変数を指定した場合に適切なエラーが出力されるなど、エラーの原因究明にも役立てることができます。
こうした理由のため変数の宣言は極力すべきです。
言語によっては宣言しないと、コンパイルすらできないのですが、VBAについていうと、この宣言を全くせずに製造、実行できてしまいます。
宣言しないことのメリットはほとんどないため、ぜひ、変数の宣言を強制数rことをお勧めします。
2.3 設定
3.VBAエディタで自動構文チェックをオフにする
2.1 概要
OutlookVBAでプログラミングをしていると、コンピュータが自動で構文チェックを行ってくれます。
この機能は初心者には誤りをすぐに指摘してくれるため、大変便利なのですがコーディング中に構文チェックが走ると、コーディングの手が止まってしまうので厄介です。この自動構文チェックを止めてしまいましょう。ちなみに、自動構文チェックを止めても、マクロ実行時にはちゃんと構文チェックされるので、何も問題ありません。
2.2 自動構文チェックの厄介なところ
たとえば、「If HENSU = 1 then ~end if」というステートメントを記述しようとします。このとき、「If HENSU =」まで売ったところで、誤ってEnterキーをたたいてしまうと、コンピュータとしてはステートメントが終わったものと認識してしまいます。すると、このステートメントは本来「Then~End If」と続くはずなのに、おかしいと認識してしまい、エラーを出力します。
このエラーがまた厄介で、画面上色が変わるとかで、視覚的に教えてくれるならばよいのですが、なんとメッセージボックスで出力してきます。そうすると、いちいちマウスなりを操作して、メッセージボックスを閉じなければいけません。
これがスムーズなコーディングを阻害してくるのが、大変に厄介です。便利なのですが、度が過ぎるとおせっかいです。
2.3 設定