vba - 在循环中删除工作簿变量

标签 vba excel

我已将工作簿分配给变量。 然后我正在做一些事情并保存文件并关闭工作簿:

如果我想在循环中使用此代码,将工作簿设置为 Nothing 是个好主意吗?

    For i = 1 To UBound(a_ven_lst1)
        Set wb_input1 = Application.Workbooks.Add
        Set ws_input1 = wb_input1.Sheets(1)
        .Rows(1).Copy ws_input1.Rows(1)
        .Rows(d_fst_ven_row & ":" & d_lst_ven_row).Copy ws_input1.Rows(2)
        s_save_path = f_str_file_name(ws_input1.Cells(2, i_ven_col_cnt).Value)
        s_file_path = s_path & "\" & s_save_path & ".xlsx"
        a_ven_lst1(i, 2) = s_file_path
        wb_input1.SaveAs Filename:=s_file_path
        wb_input1.Close True
        Set wb_input1 = Nothing
    Next i

我是否以正确的方式杀死了这个变量? 在粉碎代码后,我看到一些对象仍然存在于 VBA 编辑器中,但远远超出了这一点。

最佳答案

替代代码不用担心工作簿变量设置和取消设置

With ws_input

    '...

    Dim rowToCopy1 As Range, rowToCopy2 As Range        
    Set rowToCopy1 = .Rows(1) '<--| set first row to copy, since it's "constant" against the subsequent loop
    Set rowToCopy2 = .Rows(d_fst_ven_row & ":" & d_lst_ven_row) '<--| set second row to copy, since it's "constant" against the subsequent loop

    For i = 1 To UBound(a_ven_lst1)
        With Application.Workbooks.Add '<--| open a new workbook and reference its instance
            With .Sheets(1) '<--| reference referenced workbook sheet(1)
                rowToCopy1.Copy .Rows(1)
                rowToCopy1.Copy .Rows(2)
                s_save_path = f_str_file_name(.Cells(2, i_ven_col_cnt).Value)
            End With
            s_file_path = s_path & "\" & s_save_path & ".xlsx"
            a_ven_lst1(i, 2) = s_file_path
            .SaveAs Filename:=s_file_path
            .Close True
        End With '<--| discard the instance of the opened workbok
    Next i

    '...

End With

关于vba - 在循环中删除工作簿变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42026878/

相关文章:

excel - VBA 编译器不允许在方法参数周围使用括号

excel - 为 Excel VBA 创建常量库的理想方法是什么?

vba - 是否有 VBA 命令导致此时开始调试?

vba - 保存现有 Excel 工作簿的副本而不覆盖它

vba - 为什么同一个Err.Description有多个Err.Number?

vba - CDO 电子邮件 Access 报告

c# - 使用 EPPlus 生成 excel 文件失败

excel - ODBC Excel 驱动程序 : Unexpected error from external database driver

excel - 编辑后关闭嵌入对象

c# - 在 C# 中将数据导出到 Excel 时,索引超出了数组的范围