Win32com:关闭特定 Excel 文件(如果已打开)

Win32com: Close a specific Excel file if it's opened

我只想检查是否打开了特定的 Excel 文件。如果是,我只想关闭 那个文件。

在下面的代码中,使用:

xl.Workbooks.Close()

关闭所有打开的 Excel 个文件。

使用:

xl.Workbooks.Close(FileName=xlPath)

导致

TypeError: Close() got an unexpected keyword argument 'FileName'.

完整代码:

import win32com.client as w3c

xl=w3c.gencache.EnsureDispatch("Excel.Application")

my_workbook = "test.xlsx"
xlPath='C:/Desktop/test.xlsx'

if xl.Workbooks.Count > 0:
    if any(i.Name == my_workbook for i in xl.Workbooks):
        xl.Workbooks.Close(FileName=xlPath)

xl.Workbooks.Close()

根据 Excel 对象库文档,Workbook.CloseWorkbook 对象的一个​​方法。因此,在您的迭代中使用工作簿对象 i(为清楚起见,在下面重命名为 wb)。此外,您的 any() 表达式不会捕获 i-th 工作簿以关闭。所以 运行 名称检查里面 for-loop.

...
if xl.Workbooks.Count > 0: 
    for wb in xl.Workbooks:
        if wb.Name == my_workbook: 
            wb.Close()