在Excel VBA中保存单个工作表

目前我们有一个Excel VBA应用程序,它由25-30个Excel工作表组成(所有这些工作表都隐藏起来,我们对它们进行后台处理并将其显示到VBA表单UI中),并且我们已经使用VB表单开发了一个UI。 但是我们面临的问题是每当我们点击保存button使用这个代码:

ThisWorkbook.Save

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

我的问题是有什么办法可以保存“只有一张特定的Excel表”不是一个完整的Excel文件?

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

我已经尝试过了吗? 我从昨天开始做了很多研究,我在前面的问题上search过,但没有得到任何有用的信息。 根据我的研究,它说我们不能这样做。 我在正确的道路上?

我认为你应该考虑把你的应用程序分成多个工作簿:

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

    此工作簿/加载项也可以隐藏其他工作簿,以便用户不会注意到它是多个工作簿。

  2. 一个或多个数据工作簿:根据数据的相互关联性,可以将其分离,例如在包含大型数据库的“销售数据”工作簿中,将其作为“基本数据”工作簿,其中包含所有较小的数据(例如,产品或商店表)。

这样,你可以减less保存到“相关”表。 然而,这当然需要相当多的重新编程 – 但这是值得的,例如它也允许提供更新/错误修复而不需要在版本之间传输数据,因为您只需要通过编程来分发文件逻辑。 🙂

最简洁的答案是不。 您无法一次保存单个工作表。

您可能想要尝试减less工作簿中的数据量。 尝试将数据存储在多个工作簿中,并在需要时打开该特定工作簿,进行必要的更改,然后closures它。

如果需要同时访问所有数据,请考虑使用访问或其他数据库。

纸张也可能有“空白数据”。 不包含任何东西的单元格,但是excel认为它们在保存的时候会这样做,这样做会比所需要的更省力。

假设它是你想要保存的活动工作表,那么你可以做这样的事情:

 ActiveSheet.Copy ActiveWorkbook.Close True, "path" 

这复制活动工作表,创build一个新的工作簿,将成为积极的工作簿。 然后,只需调用close方法,并给它一个文件名。