• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルならうまく行くのですがアクセスだとエラーに)

エクセルとアクセスでのフォルダ取得の違い - 実行時エラー13について

このQ&Aのポイント
  • エクセルでは正常に動作するのに対し、アクセスでは実行時エラー13「型が一致しません」が発生します。
  • 質問者はフォルダに入っているフォルダ名を取得し、一つにつなげたいと考えています。
  • ただし、アクセスで上記のコードを実行するとエラーが発生してしまいます。

質問者が選んだベストアンサー

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.1

> アクセスだとエラーになるのですがなぜでしょうか? こちらの環境(Acc2003・WinXP Home)にて、提示されたコードを 標準モジュールに貼り付けて、イミディエイト ウィンドウから実行して みましたが、サブフォルダ名が問題なく表示されました。 > For Each MyFolder In .SubFolders > で、実行時エラー13 型が一致しません。 とのことですが、FileSystemObjectのSubFoldersのメンバーの型は Folderで間違いありません。 ですので、可能性としては  a)「Microsoft Scripting Runtime」よりも優先順位が上の参照先   で、「Folder」という名前のオブジェクトが定義されている  b)同じMDBファイルに、「Folder」という名前のクラスモジュールがある といったことが考えられます。 (別のクラスで定義されたFolder型の変数に、FileSystemObjectの  Folderを格納しようとしたため、型不一致となった、と) ※そちらの環境下で、新規ファイルを作成して、Microsoft Scripting  Runtimeへの参照のみを追加した状態で、提示されたコードをすれば、  この推測の正否を確認できます) 上記の推測が正しければ、以下のように「何が定義しているFolderか」 を明示する形に修正すれば、エラーにはならなくなるはずです。 (但し、独自のクラスモジュールで「Folder」を定義している場合は、  今回発生したようなエラーを未然に防ぐため、名前の変更を検討される  ことをお勧めします) 【現在】   Dim MyFolder As Folder 【修正】   Dim MyFolder As Scripting.Folder

KVWLTZGGTUNMJ
質問者

お礼

ありがとうございました。