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

2024-10-01 15:28:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到了一个脚本无法更新excel文件的问题,我将其简化为以下问题:

如果我打开一个excel文件,我可以转到“公式”选项卡并单击“立即计算”,它将花费一点时间更新所有的计算。在

如果我运行VBScript打开文件(参见下面的代码),如果我转到“公式”选项卡并单击“立即计算”,它将立即刷新,不会发生任何更改。在

Dim objXLApp, objXLWb, objXLWs

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

我试过各种各样的东西,比如:

^{pr2}$

但是,这些操作似乎与进入选项卡并单击“计算”所做的相同,结果只是快速刷新,而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 )

那么,为什么用这些语言打开一个文件会关闭计算公式的能力呢?在


Tags: 文件pathtrueapplicationopenexcel选项卡file
3条回答

我发现了一个问题,用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

尝试添加一个包含此内容的模块

    Sub Auto_Open()
        ActiveWorkbook.RefreshAll
        Calculate
    End Sub

试试这个。只是为了测试。在

' 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.

相关问题 更多 >

    热门问题