我有一些特殊情况,我无法找到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;原'基地工作簿。您只能在始终处理相同(即原始')工作簿时阻止其使用。 如果我错了,请纠正我。
答案 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