首页 > 解决方案 > VBA:For循环命中自动化错误-2147221080

问题描述

这是我的代码。

我的目的是,打开一个测试excel,然后保存为“测试”表中包含的文件名。我只是想自动执行为每个文件名列表保存 Excel 的任务。

Sub POPButton1_Click()           
    
    Dim i As Long, LastRow As Long
    LastRow = Test.Range("A" & Rows.Count).End(xlUp).Row
    Dim filename As String
    filename = ThisWorkbook.Path & Application.PathSeparator & "Test.xlsx"
    
    Dim sjk As Workbook
    Set sjk = Workbooks.Open(filename)
    Dim saveName As String
                    
    For i = 1 To LastRow
            
        saveName = Test.Cells(i, "D").Value
                
        sjk.SaveAs ThisWorkbook.Path & "\" & saveName

        sjk.Close
        
        
    Next i
        
End Sub

第一个excel保存得很好,然后我遇到了错误。-2147221080 自动化错误。

调试时突出显示的代码行是:

sjk.SaveAs ThisWorkbook.Path & "\" & saveName

我环顾了这个网站和许多其他网站,因为它似乎是一个常见的错误,我觉得它很容易修复,但我尝试过的任何方法都没有奏效。我已经多次重写代码以达到这一点 - 我只是看不出错误在哪里......

标签: excelvbaautomation

解决方案


啊! 我认为答案是您关闭了文件,但从不重新打开它。

将您的 Set sjk = Workbooks.Open(filename) 移动到顶部的 For 循环中。

那应该为你解决它。


推荐阅读