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

时间:2015-07-08 20:06:12

标签: excel vba excel-vba

我有一些特殊情况,我无法找到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 的方法,这在VBA中被视为坏(慢)编码。在这种情况下,我循环遍历原始工作簿的工作表,在这些工作表中复制内容 - 在某些条件下 - 然后将这些内容粘贴到新工作簿中,最后尝试将结果保存到csv文件。我这样做是通过使用以下save-routine:

Activate

如果我不使用Activate,我会收到错误消息。保存文件时有什么办法可以避免吗?

编辑:有关Activate被视为错误的原因的一些信息: How to avoid using Select in Excel VBA macros Excel Select vs Activate

edit2:经过一些研究和测试,我发现问题不是保存方法本身,而是涉及多个工作簿的上下文。从另一个工作簿中保存文件时,或者在另一个工作簿上运行宏时,我认为您不能阻止{{1}},同时在&上执行操作#39;原'基地工作簿。您只能在始终处理相同(即原始')工作簿时阻止其使用。 如果我错了,请纠正我。

1 个答案:

答案 0 :(得分:1)

如果要将工作表另存为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