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

VBA宏执行报错Runtime Error 53:文件未找到问题求助

问题分析与解决

错误原因(Runtime Error 53:文件未找到)

  • 最后一行Kill LatestFile中的LatestFile已被处理成无扩展名的文件名,且SaveAs操作未指定保存路径,文件实际保存到了Excel默认位置(而非C:\Downloads\Test),导致Kill命令找不到目标文件。
  • 若需求是删除原始.xls文件,当前代码逻辑也未指向原文件的完整路径。

修正方案

  1. 保留原文件完整路径:单独存储原始最新文件的完整路径,避免后续变量被覆盖。
  2. 指定SaveAs的完整路径:确保.xlsx文件保存到目标文件夹,避免存到Excel默认路径。
  3. 明确Kill的目标文件:删除原始.xls就用原完整路径,删除旧.xlsx则指定完整路径+正确扩展名。

修正后的完整代码

Sub TEST()
    Dim MyPath As String
    Dim MyFile As String
    Dim LatestFile As String
    Dim LatestFilePath As String ' 存储原始文件完整路径
    Dim LatestDate As Date
    Dim LMD As Date
    Dim NewFileName As String ' 存储新xlsx文件的完整路径

    MyPath = "C:\Downloads\Test"
    If Right(MyPath, 1) <> "\" Then MyPath = MyPath & "\"
    
    MyFile = Dir(MyPath & "*.xls", vbNormal)
    If Len(MyFile) = 0 Then
        MsgBox "未找到任何文件...", vbExclamation
        Exit Sub
    End If
    
    Do While Len(MyFile) > 0
        LMD = FileDateTime(MyPath & MyFile)
        If LMD > LatestDate Then
            LatestFile = MyFile
            LatestFilePath = MyPath & MyFile ' 保存原始文件完整路径
            LatestDate = LMD
        End If
        MyFile = Dir
    Loop

    Workbooks.Open LatestFilePath

    ' 生成新xlsx文件的完整路径
    NewFileName = MyPath & Left(LatestFile, InStrRev(LatestFile, ".") - 1) & ".xlsx"
    ' 若旧xlsx文件已存在,先删除(可选逻辑)
    If Dir(NewFileName) <> "" Then Kill NewFileName
    
    ActiveWorkbook.SaveAs Filename:=NewFileName, FileFormat:=51
    ActiveWorkbook.Close

    ' 如需删除原始xls文件,取消下面一行的注释
    ' Kill LatestFilePath
End Sub

关键修正点说明

  • 新增LatestFilePath变量,专门存储原始.xls文件的完整路径,后续删除原文件可直接调用。
  • 新增NewFileName变量,明确指定.xlsx文件的保存路径和文件名,确保文件存到目标文件夹。
  • 可选添加了删除旧.xlsx文件的逻辑,避免SaveAs时因文件已存在报错。
  • 注释掉原错误的Kill命令,改为按需启用删除原始文件的代码,避免误操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 05:33:19