Python win32com Excel。应用程序可以';我不能再打开文件了

Python win32com Excel。应用程序可以';我不能再打开文件了,python,excel,win32com,Python,Excel,Win32com,这是上周的工作,但由于某种原因,它今天停止工作,可能是因为新年 def remove_strikethroughs(xlsx): excel = win32com.client.Dispatch('Excel.Application') xl = pd.ExcelFile(xlsx) sheet_names = xl.sheet_names for sheet in sheet_names: if any(tab in sheet for tab

这是上周的工作,但由于某种原因,它今天停止工作,可能是因为新年

def remove_strikethroughs(xlsx):
    excel = win32com.client.Dispatch('Excel.Application')

    xl = pd.ExcelFile(xlsx)
    sheet_names = xl.sheet_names
    for sheet in sheet_names:
        if any(tab in sheet for tab in tabs_used):
            #print (sheet)

            wb = excel.Workbooks.Open(xlsx)
            ws = wb.WorkSheets(sheet)
            for cell in ws.Range('A5:B150'):
                if cell.Font.Strikethrough == True:
                    cell.value = '[MDU]' + str(cell)
            wb.Save()
            wb.Close()
    excel.Visible = True
    excel.DisplayAlerts = True
    excel.Application.Quit()
我收到以下错误消息:

"AttributeError: '<win32com.gen_py.Microsoft Excel 15.0 Object Library.Workbooks instance at 0x20920640>' object has no attribute 'open'"
“AttributeError:”对象没有属性“open”
有人能帮忙吗


谢谢

没有
open
方法,它是
open
。Python区分大小写:)

奇怪的是,我遇到了与@AndyDo相同的问题。我最初用来访问Excel应用程序的代码停止工作

原件(非工作):

** 注意-很明显,我没有匹配我使用的示例中的案例。但是,我不确定为什么代码以前工作时没有错误

资料来源:

然后,我更新了下面代码中的案例,以纠正属性错误

修订(工作):

来源-


我想知道激活了公式栏的另一个打开的工作簿是否影响了该问题。我必须做更多的调查。

当代码第一次正常运行时,我来寻找这个错误,但当我再次运行它时,抛出了一个异常“AttributeError:Excel.Application.Workbook”

这不是一个技术解决方案,这只是一个愚蠢(这是很常见的)过滤器

我在后台打开了一个Excel文件,代码关闭了Excel应用程序(当然,我们应该只关闭工作簿)。当Excel关闭时,我打开的文件的“保存”对话框在后台弹出。当我再次运行相同的代码时,Excel应用程序成了一个问题,因为它还没有从Python中发布

也许,只是也许,你也在做类似的事情。击掌!!你不是唯一一个

  • 我在运行以下代码时遇到了类似的问题:
  • 它以前可以工作,但今天在尝试运行此代码时失败了

  • 解决办法是:
    • 添加:
      将win32com.client作为w3c导入
    • 更改:
      xl=Dispatch('Excel.Application')
      xl=w3c.Dispatch('Excel.Application')

  • 您好,这在上周使用“open”时起作用,在我将其更改为“open”后,出现以下错误消息:AttributeError:“”对象没有“WorkSheets”属性@AndyDo:这可能是因为该属性名为
    WorkSheets
    ,而不是
    WorkSheets
    。请参阅。@AndyDo这是完全相同的错误。记住,python是区分大小写的,所以
    工作表!=工作表
    。在其中任何地方都没有对小写“open”的调用,您确定发布了您正在使用的代码吗?您修改的工作代码在循环使用受密码保护的.xlsb文件时对我有效。我这样做是盲目的,因为我真的找不到任何文档-1)谢谢你的回答,2)xlapp.workbooks.open中的参数在做什么/引用什么?文件,假,假,无,密码不起作用-但文件,假,真,无,密码起了作用。
    import win32com.client as w3c
    
    xlapp = w3c.Dispatch('Excel.Application')
    xlwb = xlapp.Workbooks.open(file.xlsx, False, True, None, file_password)
    xlsheet = xlwb.WorkSheets('my_sheet_name')
    
    import win32com.client as w3c
    
    xlapp = w3c.gencache.EnsureDispatch('Excel.Application')
    xlwb = xlapp.Workbooks.Open(file.xlsx, False, True, None, file_password)
    xlsheet = xlwb.Worksheets('my_sheet_name')
    
      from win32com.client import Dispatch    
      import os
    
      list_of_files=os.listdir(path)
      xl = Dispatch('Excel.Application')
      xlWb = xl.Workbooks.Open(file)