GetSharedDefaultFolderメソッドでエラーが起こる時の対策(Outlook VBA)
Outlook VBAで他の人の共有フォルダへアクセスする時には、GetSharedDefaultFolderメソッドを使用します。
しかし、VBAで共有フォルダにアクセスしようとすると、原因の分かりづらいエラーが起こることがあります。
私もタスクの共有フォルダにアクセスしようとした際に、原因がなかなか分からず苦労しました
同じ苦労をされる方を減らすために、エラー原因となる2つのポイントをまとめることにしました。
共有フォルダの取得で困っている人は参考にしてみてください。
1. 既定フォルダの共有設定(参照)を追加する
GetSharedDefaultFolderメソッドは他の人の既定フォルダを参照します。
メール、予定、タスクなど各機能で既定のフォルダが存在しています。
GetSharedDefaultFolderメソッドは既定フォルダを参照しようとするため、既定フォルダの共有設定(参照)を行っていないと、GetSharedDefaultFolderメソッドがエラーとなります。
(フォルダの所有者の方に既定フォルダの共有を頼みましょう)
また、共有するためにフォルダを作っている場合も注意が必要です。
Outlookでは自分で作ったフォルダは、既定フォルダの下層のフォルダとして扱われます。
VBAで下層のフォルダにアクセスするためには、既定フォルダ⇒下層フォルダの順にアクセスする必要があります。
そのため、共有用のフォルダを作っている場合、そのフォルダだけでなく既定フォルダの共有設定(参照)が必要になります。
2. Exchangeキャッシュの「共有フォルダーをダウンロード」を無効化
こちらは共有するためにフォルダを作っている場合に必要な設定になります。
ExchangeキャッシュはOutlookのデータをローカルファイルへと保存する仕組みです。
Exchangeキャッシュには共有フォルダも保存することができます。
しかし、この設定をしているとGetSharedDefaultFolderメソッドでアクセスした時に、共有相手のフォルダではなく、ローカルファイルの情報へアクセスしてしまいます。
既定のフォルダへアクセスするだけならいいのですが、その下層フォルダへアクセスしたい場合には問題が出てきます。
ローカルに保存されているデータからでは、下層フォルダの情報にたどり着けないためです。
VBAでやってみると分かるのですが、既定のフォルダへはアクセスできるのですが、下層のフォルダの数が0個になるはずです。
この問題の対策は、Exchangeキャッシュの設定変更です