我正在使用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设置回包含子例程的那个并且它正常工作。