在Excel VBA中保存单个工作表

时间:2013-02-25 16:53:34

标签: excel vba

目前我们有一个Excel VBA应用程序,它包含25-30个Excel工作表(所有这些工作表都隐藏起来,我们对它们进行后台处理并将其显示到VBA表单UI),我们开发了一个UI VB形式。但是我们面临的问题是每当我们使用以下代码点击“保存”按钮时:

ThisWorkbook.Save

但是这样可以保存整个工作簿而不是单个工作表,因此即使我们在单页中进行更改也会保存整个工作簿,这种保存处理速度非常慢(因为它需要保存包含大量数据的所有Excel工作表,即使没有变化。)

我的问题是,我们有什么方法可以保存“只有一张特定Excel表格中的一张”而不是整个Excel文件?

注意:我是一名Java开发人员,之前我曾在VBA工作过,但是几年前我已经忘记了。任何指导将不胜感激。或者任何有关如何处理这种情况的指示将不胜感激。如果您需要更多信息,请告诉我,我可以编辑这个问题。

我已经尝试了什么?我昨天做了很多研究,我在之前的问题上搜索了SO,但没有得到任何有用的信息。根据我的研究,它说我们做不到这一点。我在正确的道路上吗?

3 个答案:

答案 0 :(得分:4)

简短的回答是否定的。您不能一次保存单个工作表。

您可能希望尝试减少工作簿中的数据量。尝试将数据存储在多个工作簿中,并在需要时打开该特定工作簿,进行必要的更改,然后将其关闭。

如果需要一次访问所有数据,请考虑使用访问权限或其他数据库。

纸张也可能有“空白数据”。不包含任何东西但是excel的单元格认为它们在保存时会这样做,试图节省超出需要的方式。

答案 1 :(得分:3)

假设它是您要保存的活动工作表,那么您可以执行以下操作:

ActiveSheet.Copy
ActiveWorkbook.Close True, "path"

这将复制活动工作表,该工作表将创建一个将成为活动工作簿的新工作簿。然后只需调用close方法并为其指定文件名。

答案 2 :(得分:2)

我认为您应该考虑将您的应用程序拆分为多个工作簿:

  1. 包含所有逻辑,用户表单和编程代码的工作簿。此工作簿处理所有其他工作簿以及它的显示。潜在地,这甚至可能是“特定于应用程序的插件”,它保持休眠状态,但只要其后续工作簿中的任何一个打开就会激活。对于此体系结构方法,请查看this link中“特定于应用程序的插件”部分。

    这个workobook /加载项也可以隐藏其他工作簿,这样用户就不会注意到它的多个工作簿。
  2. 一个或多个数据工作簿:根据数据的相互关联方式,您可以将其分开,例如:在“销售数据”工作簿中,其中包含大型数据库,作为“基础数据”工作簿,其中包含所有较小的数据(例如产品或商店表)。
  3. 这样,您可以将保存减少到“相关”表格。然而,当然这需要相当多的重新编程 - 但它值得付出努力,例如它还允许提供更新/错误修复而无需在版本之间传输数据,因为您只需要通过编程来分发文件逻辑。 : - )