避免在使用多个工作簿时通过保存文件来激活

我有一个特殊情况,在哪里我找不到一个方法Activate这是在VBA中被认为是不好(慢)编码。 在这种情况下,我正在循环显示原始工作簿的表单,从这些表单中复制内容 – 在特定条件下 – 然后将这些内容粘贴到新的工作簿中,最后尝试将结果保存到csv文件中。 我正在通过使用下面的保存程序做到这一点:

 Private Sub saveWorksheet(pathx, wbkn, sheetn) path = pathx & ".csv" Workbooks(wbkn).Sheets(sheetn).Activate Workbooks(wbkn).SaveAs Filename:=path, _ FileFormat:=xlCSV, Local:=True, CreateBackup:=False End Sub 

如果我不使用Activate我得到一个错误。 保存文件时有什么办法可以避免吗?

编辑:关于为什么Activate被认为是不好的一些信息: 如何避免使用 Excel中select VBAmacros Excelselect与激活

编辑2:经过一些研究和testing后,我发现问题不是保存方法本身,而是涉及多个工作簿的上下文。 我不认为你可以防止从另一个工作簿保存文件时,或者也可以在另一个工作簿上运行一个macros,同时做“原始”的基本工作簿上的东西时Activate 。 您只能在始终处理相同(即“原始”)工作簿时才能使用它。 如果我错了,请纠正我。

当你想保存工作表为csv,为什么不直接使用问题的工作表。 工作簿保存为csv需要知道活动工作表

 Private Sub saveWorksheet(pathx, wbkn, sheetn) dim ws as worksheet path = pathx & ".csv" set ws = worksheets(sheetn) ws.SaveAs Filename:=path, FileFormat:=xlCSV, Local:=True, CreateBackup:=False End Sub