You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA检查文件是否存在时触发Run Time 13类型不匹配错误求助

问题原因排查及解决办法

错误根源

  1. 变量类型不匹配:PathExists被声明为String类型,但fso.FolderExists()返回的是布尔值(True/False),赋值时直接触发类型不匹配错误。
  2. 逻辑判断错误:If FullFilePath Then这行用字符串直接做条件判断,VBA会尝试将字符串强制转换为布尔值,非空字符串会被转为True,但这根本不是判断文件是否存在的正确逻辑,同时也会引发类型转换的潜在报错。

解决步骤

  • 修正变量类型:把PathExists的声明从String改为Boolean,匹配FolderExists的返回值类型。
  • 替换错误判断逻辑:用fso.FileExists(FullFilePath)来检查目标文件是否存在,这是FileSystemObject判断文件存在的标准方法。

修正后的完整代码

Private Function Check_IfFileExist() As Boolean
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Dim PathName As String
    Dim PathExists As Boolean ' 修正为布尔类型
    Dim FileName As String
    Dim FullFilePath As String

    FileName = Format(Now(), "dd-mm-yyyy")
    PathName = "C:\Users\" & Environ("UserName")
    PathExists = fso.FolderExists(PathName)
    
    ' 先确认文件夹存在,再检查文件
    If PathExists Then
        FullFilePath = PathName & "\" & FileName
        Check_IfFileExist = fso.FileExists(FullFilePath)
    Else
        Check_IfFileExist = False
    End If

    Set fso = Nothing
End Function

额外优化点

  • 原代码中声明的oFile变量从未使用,可直接删除以精简代码。
  • 增加文件夹存在性判断,避免文件夹不存在时做无效的文件检查。

内容的提问来源于stack exchange,提问作者Grmn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 20:32:37