无法移动/删除共享工作簿中的行 – 没有足够的资源

这是一个痛苦的一点,所以感谢你的帮助和耐心与我。

我们有一个Excel电子表格,我们将其用作我们网站产品的主文件。 因此,在一些macros的每一个上运行着相当多的表单和相当多的产品,以提供一些额外的function(将input的数据转换成产品页面的HTML等)。

我的问题是,我们最常用的电子表格之一已经成为一个麻烦,因为它有一些幻影格式,一直到百万行和所有的方式,导致最后一个单元格是最后一个单元格。

最终导致popup的问题是,我们不能再移动行内外的行(一个必需的function),因为它导致了“资源外的错误”。

我试过了:

  • 突出显示使用范围下面的所有行,右键单击>删除 – 导致运行时错误(从macros)
  • 突出显示大块行并使用“全部清除” – 导致38MB文件膨胀到380MB
  • 一次删除一大块行 – 在1000导致Excel崩溃之前,最大限度地减less了1000
  • 转移到新的电子表格 – 打破了我们所有的macros(我没有写,也没有足够的精力来修复新的表格)
  • 禁用macros并尝试上述选项,只是稍微高效,但仍然没有资源

我在这个世界上一窍不通,虽然我们可以继续大部分的日常工作,但是我们很快就完全无法使用这个特定的表格,因为我们需要它。

我想知道是否可能有一种方法来运行一个VBA脚本来删除这些行,可能是一个一个? 我试过运行一个简短的脚本,像行[960,1000000]。删除(原谅我可怕的VBA标记),但这也导致没有足够的资源错误。

我想知道是否有这样的事情:

row = 960; while(row<=1048576){row.Delete}; 

继续,运行时错误debugging将我指向macros中的下面的if语句:

 If Target.Count > 1 Then Exit Sub 

Target是传递给子的variables。

这让我觉得很奇怪,因为我对VBA和IF的理解一般都认为'如果我的select大于1(行?),不要运行这个代码。

再次感谢提前。

只有当您没有任何链接进入或离开将被破坏的工作表时才使用此方法。 也可能有Sql连接,可能会被打破。 可能需要禁用macros。 这种方法有许多可能的问题。 使用风险自负。

  1. 注意工作表的确切“名称”和“(名称)”; 在VBA代码窗口中查找表单的属性。 “名称”是工作表选项卡上显示的名称。 “(Name)”是仅在属性窗口中可见的代码名称。
  2. 在工作表上制作范围名称列表。
  3. 将数据复制到新工作表。
  4. 将任何macros复制到新工作表。
  5. 删除旧的工作表。
  6. 将新工作表的“名称”和“(名称)”重命名为旧工作表。
  7. 重新创build范围名称。

如果你没有太多的格式,一个更好的方法:

  1. 禁用macros并将计算设置为手动。 这可以避免在执行删除操作时重新计算。
  2. select整个表格和清晰的格式。
  3. 删除数据下的所有行。
  4. 重做你的格式。 如果适用,select整个列(不只是使用区域)来应用格式。

从A1到最后删除整个表格的格式是非常重要的。 否则,你会得到你提到的膨胀。 只要这一步可以解决你的问题。 如果不是,则继续删除数据下面的所有行。 这不应该导致文件大小膨胀。