本記事ではOutlookのVBAマクロによるTaskItem操作で以下エラーが発生した場合の解決方法について記載しています。
発生したエラーと解決方法の結論は以下です。
解決方法はOutlook.Namespace型からVariant型に変更することでした。
Dim myNamespace As Variant
Set myNamespace = Outlook.Application.GetNamespace("MAPI")
詳細を以下に記載します。
実行時エラー13が発生した環境
OS:Windows10
ソフトウェア:Microsoft Outlook for Microsoft 365
実行時エラー13発生経緯
発生日:2020/6/22
2020/6/19までは問題なく動いていましたが、6/22にvbaマクロを実行したところエラーが発生し、動かなくなりました。
おそらく急遽動かなくなったので、Microsoftの更新プログラムの影響かなと思います。
発生したエラー詳細
int型の変数にString型のデータを入れるなどした場合に発生する型不一致のエラーが発生してしまいました。
デバッグすると以下の箇所でエラーが発生していることが判明。
Dim myNamespace As Outlook.Namespace
Set myNamespace = Outlook.Application.GetNamespace("MAPI") ←ここでエラーが発生
こんなところで型不一致のエラーが発生したことないので、いろいろ調べてみました。
しかし、Outlookのvbaに関する情報が少なく中々見つけることができませんでした。
メモリ的に無駄遣いかもしれないなと思いましたが、強引に解決することにしました。
実行時エラー13解決策
VBAに変数の型としてintが入ろうが、stringが入ろうが問題ないような何でもOKみたいな万能な型がないのか調べてみました。
調べるとVariant型というものが上記の要求に合致したので、実際にソースを以下のように変更してみました。
Dim myNamespace As Variant
Set myNamespace = Outlook.Application.GetNamespace("MAPI")
何の問題もなく動いてしまいました。
上記のような何の型か分からないような場合はVariantでいいと思いますが、int型とわかっているものはint型で定義した方がメモリに優しい気がします。
他にもっといい解決策あるよ!という人がいたらコメントください!
どなたかの参考になれば嬉しいです!
Outlook VBAのTaskItem操作における実行時エラー13の解決方法まとめ
Outlook VBAのTaskItem操作における実行時エラー13の解決方法についてまとめます。
解決方法はOutlook.Namespace型からVariant型に変更することでした。
Dim myNamespace As Variant
Set myNamespace = Outlook.Application.GetNamespace("MAPI")
仕事でアウトルックを使う人はアウトルック最速仕事術をご一読をおすすめします。
メールのフォルダ分をしない考え方は斬新でしたし、余計なことを考えなくて済む分効率が上がりました。
アウトルックのタスク管理を効率化するマクロを作りました。
よかったら使ってください>>>【Outlook】タスクの開始日を一括で変更するVBAマクロ
コメント