作为将流程转移到 CRM 系统之前的临时修复,我使用 Excel/VBA 编写了一个工具,允许用户进行一些区域规划。
此工具会打开位于共享目录中的工作簿。然后它将数据拉入隐藏工作表上的用户工作簿。然后,用户通过他们可以看到的工作表进行所需的更改(这些工作表上有一个保存按钮,可以更改隐藏工作表上的相应数据)。
当用户完成所有需要的更改时,他们点击“确认”按钮。然后有一个宏重新连接到共享目录上的工作簿。它将数据推送回共享目录上的此工作簿。此工作簿是 [共享] 的,因此多个用户可以同时进行更改,并且设置代码以防止数据被不适当地覆盖。
也就是说,我想出了一个烦人的问题。我们在国际上的许多地方都设有办事处。看来用户的连接速度差别很大。连接速度较慢的用户会遇到以下错误:
“Microsoft Office Excel 正在等待另一个应用程序完成 OLE 操作。”
我怀疑这是由于连接速度较慢,因为微软的支持站点指出,当 excel 尝试与另一个没有及时响应的应用程序交互时,可能会出现此错误。
当宏尝试在共享目录中打开工作簿时会出现此错误,因此连接速度是有意义的主要问题。
我发现我可以通过使用来阻止此错误,Application.DisplayAlerts = False
但更好的解决方法是使此过程更有效。
所以我真正的问题是,除了打开工作簿之外,还有什么更有效的方法可以用来提取这些数据?
编辑:工作表打开共享工作簿的代码:
Dim xlo As New Excel.Application
Dim xlw As New Excel.Workbook
Dim xlz As String, regions As String
xlz = Sheet1.Range("o1").Value & "\Region Planning\TestDB.xlsx"
Set xlw = xlo.Workbooks.Open(xlz)
单元格 O1 包含共享驱动器的驱动器号。