このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

「不正なモジュールです」VBAでFolder型変数がエラーとなる原因と対策

2023年1月13日

Folder型変数を使う時、「不正なモジュールです」というエラーが出ることがあります。

もしくは、Folder型変数にSetする時になぜか「型が一致しません」のエラーが生じた経験があるかもしれません。

私もこのエラーの原因が分からず困っていたのですが、原因と解決策が分かったので公開いたします。

VBAが難しいと感じたら
ココナラにてマクロ(VBA)の作成代行を始めました。
ご依頼はこちらから

「不正なモジュールです」が出る原因

「不正なモジュールです」が出る原因

「不正なモジュールです」のエラーが起こる原因はOutlookとScripting Runtimeのライブラリに原因があります。

このライブラリはどちらもFolder型が存在します。(Scripting RuntimeはFileSystemObjectにFolder型があります)

そのため、両方のライブラリの参照設定をしているとどちらも同じFolder型のためエラーとなってしまうのです。

試しにどちらかのライブラリの参照設定を外してみてください。エラーが解消するはずです。

「不正なモジュールです」の対策

ライブラリの参照設定を外せばエラーは解消するのですが、あまり好ましい解決策ではないですよね。

ここからは両方のライブラリを参照設定した状態でエラー回避する方法を紹介します。

Sub Sample()
    'Folder×⇒Scripting.Folder or Outlook.Folder
    Dim fsoFldr As Scripting.Folder
    Dim outlookFldr As Outlook.Folder
End Sub

解決策は簡単で、サンプルコードのようにFolderの前にScriptingかOutlookを付ければOKです。

これでどちらのライブラリのFolderなのかが明確となるためエラーが解消します。

両方のライブラリを使いたいという場合は、このように型を厳密に記載しましょう。

VBAが難しいと感じたら
ココナラにてマクロ(VBA)の作成代行を始めました。
ご依頼はこちらから

VBA

Posted by やろまい