查找文件夹/子文件夹名称时 MS Access VBA 运行时错误“13”类型不匹配

Posted

技术标签:

【中文标题】查找文件夹/子文件夹名称时 MS Access VBA 运行时错误“13”类型不匹配【英文标题】:MS Access VBA Run-time Error '13' Type Mismatch when looking up folder/subfolder names 【发布时间】:2020-04-24 14:38:16 【问题描述】:

这是我在 MS Access 中使用的 VBA 代码(来自 Microsoft 的支持站点 - 未经编辑):

**

Private Sub Command3_Click()
         Dim fso As New FileSystemObject
         Dim f As Folder, sf As Folder, path As String
         'Initialize path.
         path = Environ("windir")
         'Get a reference to the Folder object.
         Set f = fso.GetFolder(path)
         'Iterate through subfolders.
         For Each sf In f.SubFolders
           Debug.Print sf.Name
         Next
      End Sub

**

我还创建了目录 "C:\Test" 并尝试了 path = "C:\Test\" 和 path = "C:\Test" 我知道需要启用参考“Microsoft Scripting Runtime” - 确实如此。

代码编译没有错误。 尽管如此,当我尝试运行它时,我仍然收到运行时错误“13”类型不匹配。

还有什么我做错了吗?

【问题讨论】:

您的代码对我有用。错误发生在哪一行? 无法根据提供的信息进行复制。您的数据库中还有哪些其他代码? 哪一行有错误? 抱歉没有早点回来。非常感谢您的回复。错误发生在:Set f = fso.GetFolder(path) 【参考方案1】:

尝试后期绑定

      Private Sub Command3_Click()
       Dim fso As Object
     Set fso = CreateObject("Scripting.FileSystemObject")

      Dim f As Object, sf As Object, path As String
     'Initialize path.
     path = Environ("windir")
     'Get a reference to the Folder object.
     Set f = fso.GetFolder(path)
     'Iterate through subfolders.
     For Each sf In f.SubFolders
       Debug.Print sf.Name
     Next
  End Sub

【讨论】:

谢谢。我尝试了后期绑定。现在,我收到错误 '91 - 对象变量或未设置块变量。我做了一些环顾四周以找出原因,我很困惑。我还使用 path = "C:\Test\" 和 "C:\Test" 进行了测试,但仍然出现相同的错误。 脚本库似乎没有在您的系统上注册。所以试着关注***.com/questions/56396335/…上的答案

以上是关于查找文件夹/子文件夹名称时 MS Access VBA 运行时错误“13”类型不匹配的主要内容,如果未能解决你的问题,请参考以下文章

MS Access 365 - 创建包含链接文件的子表单

MS Access 组合框列查找第三个表(多维查找?)

使用 ODBC 从 Web 服务器连接到 MS Access 数据库时找不到数据源名称

在 VBA 中查找适用于 MS Access 和 MS Excel 的应用程序目录路径

基于包含子查询的查询的 ms-access 交叉表查询

从 MS Access 中的表单调用公共子