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

While循环指定行数:复制每20行到新工作簿遇1004运行时错误

解决VBA复制每20行到新工作簿时的Runtime Error 1004错误

原代码触发Runtime Error 1004的核心问题及修正方案如下:

错误原因

  1. 行号起始错误:Excel行号从1开始,原代码用i=0作为起始行,Rows(0)是无效引用,直接触发错误。
  2. 空行判断逻辑错误:Rows(i) <> ""的写法无法正确判断整行是否为空,且会在无效行号时抛出异常。
  3. 复制行数错误:i & ":" & (i + 20)会复制21行(从i到i+20),不符合每20行的需求。
  4. 路径格式问题:"E:" & "NEW-BOOK"的写法可能导致路径识别异常,标准路径应使用\作为分隔符。

修正后的代码

Sub OpenAndSaveNewBook()
    Dim MyBook As Workbook, newBook As Workbook
    Dim FileNm As String
    Dim i As Integer
    i = 1 ' 从第1行开始,符合Excel行号规则
    Set MyBook = ThisWorkbook
    
    ' 循环直到当前行第1列无数据(可根据实际情况调整判断列)
    Do While MyBook.Sheets("Sheet1").Cells(i, 1).Value <> ""
        FileNm = "E:\NEW-BOOK" & i & ".xls" ' 修正路径格式
        Set newBook = Workbooks.Add

        With newBook
            ' 复制20行:从i到i+19
            MyBook.Sheets("Sheet1").Rows(i & ":" & (i + 19)).Copy .Sheets("Sheet1").Rows("1")

            ' 保存新工作簿,xlNormal对应xls格式
            .SaveAs Filename:=FileNm, FileFormat:=xlNormal, CreateBackup:=False

            .Close Savechanges:=False
        End With
        
        i = i + 20 ' 每次跳过20行,下一批从i+20开始
    Loop
End Sub

关键修改说明

  • 起始行调整:将i=0改为i=1,匹配Excel的行号规则。
  • 循环终止条件:改用Cells(i,1).Value <> ""判断第1列是否有数据,避免无效行引用,也可根据实际数据列调整判断的列号。
  • 复制行数修正:将i+20改为i+19,确保每次复制20行。
  • 路径格式修正:添加路径分隔符\,避免保存路径识别错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:55:18