2014-11-06 222 views
0

因此,回想起来,这可能不是解决我的应用程序的最佳方式。但这里是发生了什么事情的简要概述:Excel VBA - 在宏内循环保存的工作簿...工作簿无法打开

  1. 创建通过从每个文件的文件和提取数据的宏环路和转储到一个统一的工作簿
  2. 宏渐渐挂在很长的循环接近尾声
  3. 为了在数据挂起后保留数据(为了理解在循环中挂起的位置/方式),我在每次迭代结束时添加了一个Workbook.Save命令。
  4. 该循环使其成为最后一次迭代并被挂起。
  5. 我重新打开工作簿和所有的数据存在,但它在循环仍挂

我的问题:

  1. 我不能打破(Ctrl + Break)的循环,有没有其他方法可以杀死当前的执行?
  2. 当Excel在迭代后保存文档时,是否有可能在书重新打开时在宏内的执行点选择备份?
  3. 最后,无论如何,从看似损坏的工作簿中提取宏?
+0

两件事:1)将'DoEvents'添加到循环的内部。 2)您可以通过打开菜单并按住打开按钮的同时按住Shift键来打开工作簿,而无需执行任何代码。 – 2014-11-06 19:21:41

+0

您是否在循环结束时尝试了'Stop'命令并逐步完成下一个数据提取命令?你可能想要添加一个计数器来监视迭代 – 2014-11-07 04:17:00

回答

0

我会在黑暗中漫步一下,因为你没有提供任何代码来参考。

  1. 如果循环没有结束,它通常以重新启动Excel结束。在这种情况下,打破选项并不真正起作用。

  2. 如果您分配了工作簿中的变量,你可以保存更改关闭:

    Dim wb as Workbook 
    ... 
    wb.Close True 
    
  3. 您可以在它的另一个工作簿中的宏复制工作表。