如何在处理其他工作簿时在后台运行(长)VBA宏

时间:2018-01-22 16:52:39

标签: excel-vba vba excel

我有一个用例,我无法找到实现和处理它的解决方案。

我的应用程序(第一个工作簿文件)代码处理一个长文件。它需要很长时间(比如说15分钟)并让用户等待结束。用户在进程运行时切换到另一个工作簿(第二个工作簿文件)。

当进程结束时,应用程序使用对第一个工作簿中的工作表的引用而且很可能失败。如何在不对第一个文件名进行硬编码的情况下处理这种情况?

问题是宏在第一个工作簿表中运行进程。 工作簿名称通过全局String gsWkbName

存储在应用程序代码中
Public gsWkbName as String
gsWkbName = ActiveWorkbook.Name()

在运行任何有意义的代码之前,在Workbook_Activate和Workbook_Open中打开工作簿时执行代码。

当应用程序需要访问工作表时,我使用以下代码

Dim wks as Worksheet
With Application.Workbooks(gsWkbName)
  Set wks = .Sheets('somesheet')

End With 

当前工作簿不是第一个工作簿时,我发现了多个错误。 如果第一个工作簿是当前的工作簿,我不会。 第二个工作簿没有正在运行的代码(通过wat我没有尝试过运行代码的情况)。

1 个答案:

答案 0 :(得分:0)

  <div class="card--wrapper">
    <div class="card">
    </div>
  </div>

Thx @ DarrenBartrup-Cook