为什么VBA ActiveWorkbook.SaveAs会更改打开的电子表格?

del*_*ber 6 excel vba

我的功能如下:

Sub saveCSV()
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:= _
    "c:\temp\file.csv", FileFormat:=xlCSV _
    , CreateBackup:=False
End Sub
Run Code Online (Sandbox Code Playgroud)

我正在尝试将活动工作表导出为CSV.当我在标题中运行代码时,Book1.xlsm更改为file.csv,Sheet1更改为文件.出口工作正常.如何在没有这些不必要的副作用的情况下进行导出?

Joe*_*win 6

这一直是SaveAs的工作方式.解决这个问题的唯一方法是复制工作表并在副本上执行SaveAs,然后关闭它.

编辑:我应该添加一个例子,因为它并不难做到.这是一个将示例复制ActiveSheet到新工作簿的快速示例.

Dim wbk As Workbook
Set wbk = Workbooks.Add
ActiveSheet.Copy wbk.Sheets(1) ' Copy activesheet before the first sheet of wbk
wbk.SaveAs ....
wbk.Close
Run Code Online (Sandbox Code Playgroud)

复杂的工作簿可能会出现链接和宏的问题,但在普通情况下这是安全的.

编辑2:我知道你正在尝试做什么,因为你的另一个问题是关于尝试在每次更改工作表时触发导出.此处提供的此抄表方法可能具有高度破坏性.

我的建议是手动编写CSV文件以最大限度地减少GUI中断.如果以高频率进行保存,则纸张可能变得不可用.我不会在Excel的门口为此负责,它根本不是为了在幕后进行快速保存而构建的.