1

我正在使用 Datanitro 构建一个程序,该程序从许多工作簿中收集数据并将其转储到主工作簿中。

该程序运行良好,尽管它的运行速度比我希望的要慢,而且每次我运行 close_wkbk() 时,excel 都会询问我是否要保存工作簿(我不想)。

为了使用 VBA 解决这个问题,我将使用以下代码片段将程序括起来:

With Application
.DisplayAlerts = False
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With

With Application
.DisplayAlerts = True
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
End With

Datanitro 似乎不支持此功能,因此我在运行脚本的工作簿中的一个模块中创建了以下两个 VBA 子例程:

Sub RemoveAlerts()
With Application
.DisplayAlerts = False
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With
End Sub

Sub DisplayAlerts()

With Application
.DisplayAlerts = True
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
End With

End Sub

然后,我用以下代码将我的 python 脚本括起来:

VBA("RemoveAlerts")

VBA("DisplayAlerts")

RemoveAlerts 似乎可以正确执行,但 DisplayAlerts 抛出以下错误消息

, line 48, in grab_all_intrinsic_values
VBA("DisplayAlerts")
File "27/basic_io.py", line 1850, in VBA 
File "27/iron.py", line 305, in runExcelMacro 
File "27/dnparser.py", line 95, in checkForErrors
dntypes.NitroException: The object invoked has disconnected from its clients.
(Exception from HRESULT: 0x80010108 (RPC_E_DISCONNECTED))

知道是什么导致了这个错误吗?

找到答案时包括以下编辑:

原来问题是我的 active_workbook 已更改为不包含 DisplayAlerts 子例程的工作簿。我确保将我的 active_workbook 设置回包含子例程的那个并且它工作正常。

4

0 回答 0