4

我有一个包含多张工作表的工作簿。我按下一个(功能区)按钮,一个子例程将多张工作表保存为 .csv,输出一些 java 代码,然后返回。问题是:一旦返回,工作簿已转换为 .csv 文件(最后保存的文件),无法进行进一步的 .xlsm 操作。

我该如何解决?

修正案:

与Java或shell无关。每当我这样做时:

Sheets("someSheet").SaveAs Filename:=someName, FileFormat:=xlCSV

这会将整个工作簿更改为 someSheet.csv。然后,工作簿的行为变得奇怪。我无法在不更改所有内容的情况下保存为 .csv。

4

2 回答 2

3

使用SaveCopyAs.

它使您的原始工作簿保持原样并保存一份副本。需要 2007 或更高版本,但既然您提到了应该没问题的功能区按钮。从链接:

ActiveWorkbook.SaveCopyAs "C:\TEMP\XXXX.XLS"

http://msdn.microsoft.com/en-us/library/office/bb178003(v=office.12).aspx

于 2012-12-19T18:27:52.823 回答
2

在 Excel 中,该Save As操作使用新名称和格式/样式创建工作簿的新副本,然后关闭旧副本。

.csv 文件不支持宏,因此您的工作簿的行为符合设计。

为了在执行 后返回到原始工作簿Save As,您需要重新打开原始工作簿,然后关闭新的 .csv 工作簿。

否则,您可以想出一种自定义Export方法,将每张工作表上的数据导出到 .csv 文件,但这似乎不必要地复杂。

于 2012-12-19T17:28:11.853 回答