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

VBA代码报错排查:打开最新版文件统计行数并写入单元格

解决VBA统计行数时报错的问题

嘿,我瞅了下你的代码,问题出在打开文件后没有正确引用工作簿对象上。你用f1来调用Worksheets,但f1是FileSystemObject返回的File对象,根本不是Excel的Workbook对象,Excel自然不知道你要操作哪个工作表啦。

接下来给你拆解修正点,再贴完整的修复代码:

主要问题点

  • 打开文件后未将工作簿赋值给变量,错误地用FSO的File对象操作工作表
  • 需求是写入(K,2)单元格(即第2行第11列),原代码写的是(2,20)(T列),不符合需求

修正后的代码

Sub CountRows()
    Dim SourceLocation As String
    Dim strdays As Integer
    Dim FSO As Object
    Dim f As Object, f1 As Object, fc As Object
    Dim wb As Workbook ' 新增工作簿对象变量
    Dim LastRow As Long
    
    strdays = 2
    SourceLocation = "H:\location\"
    
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set f = FSO.GetFolder(SourceLocation)
    Set fc = f.Files
    
    For Each f1 In fc
        ' 检查文件是最近2天修改的,且文件名前6位是myFile(不区分大小写)
        If DateDiff("d", f1.DateLastModified, Date) < strdays And LCase(Left(f1.Name, 6)) = "myfile" Then
            ' 打开文件并赋值给wb变量,建议加ReadOnly避免锁定文件
            Set wb = Workbooks.Open(f1.Path, ReadOnly:=False) ' 如果需要保存就设为False,只读则True
            ' 统计Sheet1的A列最后一行行数
            LastRow = wb.Worksheets("Sheet1").Range("A" & wb.Worksheets("Sheet1").Rows.Count).End(xlUp).Row
            ' 写入到K2单元格(第2行第11列)
            wb.Worksheets("Sheet1").Cells(2, 11).Value = LastRow
            
            ' 可选:保存并关闭工作簿,如果不需要保存可以去掉SaveChanges:=True
            wb.Close SaveChanges:=True
            Exit For ' 找到第一个符合条件的文件就退出循环
        End If
    Next
    
    ' 释放对象,避免内存泄漏
    Set wb = Nothing
    Set fc = Nothing
    Set f = Nothing
    Set FSO = Nothing
End Sub

关键改动说明

  1. 新增wb工作簿变量:把打开的文件赋值给wb,后续所有工作表操作都通过这个变量来引用,这是解决报错的核心。
  2. 修正单元格位置:把Cells(2,20)改成Cells(2,11),对应需求中的(K,2)单元格。
  3. 明确引用Rows.Count:原代码中Rows.Count默认是当前活动工作表的行数,加上wb.Worksheets("Sheet1").前缀,确保引用的是目标工作表的行数,避免活动工作表切换导致的错误。
  4. 添加对象释放:最后手动释放所有对象变量,避免VBA内存泄漏。
  5. 可选的ReadOnly参数:打开文件时可以根据需求设置ReadOnly,如果只需要读取统计不需要修改,设为True更安全,不会锁定文件。

这样修改后,代码就能正常统计行数并写入指定单元格啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 17:12:48