python - 手动打开 excel 文件允许公式运行,使用 VBScript 或 PowerShell 或 Python 的 win32com 打开 excel 文件则不允许

标签 python winapi excel vbscript vba

我遇到的问题是脚本没有更新 excel 文件,我将其归结为以下问题:

如果我打开一个 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 )

那么为什么用这些语言打开文件会以某种方式关闭计算公式的能力?

最佳答案

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

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

关于python - 手动打开 excel 文件允许公式运行,使用 VBScript 或 PowerShell 或 Python 的 win32com 打开 excel 文件则不允许,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25022266/

相关文章:

根据算术优先级制作括号的Python解析器

python - 为什么在 Tensorflow 简单神经网络示例中再添加一层会破坏它?

winapi - GlobalFree() 导致用户断点...内存块是固定的,未锁定,单个模块,无 DLL

windows - FindFirstFile 和 "."/".."记录属性

excel - Angular 5 上的 XLSX 缩小版?

excel - 使用左函数 [VBA]

excel - 根据间隔选择列表中的值?

python - 我的背包代码输出错误?

python - pipenv shell 无法创建虚拟环境

c++ - 在 union 中访问结构