手动打开Excel文件允许公式运行,用VBScript或PowerShell或Python的win32com打开excel文件不会

我遇到一个脚本没有更新Excel文件的问题,我减less了以下问题:

如果我打开一个Excel文件,我可以去公式选项卡,点击“现在计算”,它会花一点时间更新所有的计算。

如果我只是运行一个VBScript来打开文件(见下面的代码),如果我去公式选项卡,然后单击“立即计算”它将立即刷新,没有什么会改变。

Dim objXLApp, objXLWb, objXLWs Set objXLApp = CreateObject("Excel.Application") objXLApp.Visible = True Set objXLWb = objXLApp.Workbooks.Open(file_path.xls) 

我已经尝试了各种各样的东西:

 objXLApp.Calculation = xlAutomatic objXLApp.Calculate objXLApp.CalculateFull objXLApp.CalculateFullRebuild objXLWb.RefreshAll objXLWs.EnableCalculation = True objXLWs.Calculate 

但这些似乎做同样的事情,去标签,点击“计算”导致只是一个快速刷新和Excel页面不会尝试更新。

使用python的win32com模块也是如此。 我无法在打开的文件中运行计算。

 import win32com.client as win32 excel = win32.Dispatch('Excel.Application') excel.Visible = True excel_workbook = excel.Workbooks.Open(file_path.xls) 

使用PowerShell也是如此。

 $excel = New-Object -com excel.application $excel.Visible = $True $workbook = $excel.Workbooks.Open( $file_path ) 

那么为什么用这些语言打开一个文件closures了计算公式的能力呢?

尝试这个。 只是为了testing。

 ' Launch Excel... CreateObject("WScript.Shell").Run "excel.exe" ' Wait for it to load... WScript.Sleep 5000 ' Get the running instance... Set Excel = GetObject(, "Excel.Application") ' Open your workbook... Excel.Workbooks.Open strPath ' Now go and click the Calculate button and see if it works. 

我发现这个问题,用VBScript(或Powershell)打开Excel页面不会自动包含手动打开时包含的Addins,所以我需要手动添加这两个插件。

 excel.AddIns.Add("C:\Program Files (x86)\PIPC\Excel\PITrendXL.xla").Installed = True excel.AddIns.Add("C:\Program Files (x86)\PIPC\Excel\pipc32.xll").Installed = True 

尝试在其中添加一个模块

  Sub Auto_Open() ActiveWorkbook.RefreshAll Calculate End Sub