2017-01-05 8 views
0

これは先週働いていましたが、何らかの理由で今日の仕事が止まってしまいました。win32com Excel.Applicationはもうドキュメントを開くことができません

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

は、誰かが助けてくださいことはできますか?

ありがとうございます!

+0

どこにでも小文字の "open"を呼び出す必要はありません。使用しているコードを投稿してもよろしいですか? – Schollii

答えて

0

openメソッドはありません。Openです。 Pythonは大文字と小文字を区別します:)

+0

こんにちは、これは先週私が "Open"に変更した後、 "open"でこのエラーメッセージが表示されました: AttributeError: '属性 'WorkSheets'はありません –

+1

@AndyDo:おそらく、属性が 'WorkSheets'ではなく' Worksheets'という名前であるためです。 https://msdn.microsoft.com/en-us/library/office/ff835542.aspxを参照してください。 –

+0

@AndyDoこれはまったく同じエラーです。覚えておいて、** pythonは大文字と小文字を区別する**ので、 'WorkSheets!= Worksheets'です。 –

0

奇妙なことに、私は@AndyDoと同じ問題に遭遇しました。もともとExcelアプリケーションにアクセスするために使用したコードは機能しなくなりました。

オリジナル(非稼働):

** 注 - それは私が私が使用した例からケースと一致しなかったことは明らかです。しかし、なぜコードが以前にエラーなく動作したのか分かりません。

出典:How to open a password protected excel file using python?

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

その後、私は属性のエラーを修正するには、以下のコードに見られるようなケースを更新しました。

改訂(作業):

ソース - Python Excel Mini Cookbook

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

数式バーがアクティブにされた別の開いているブックが問題に影響を与えた場合、私は思ったんだけど。私はもっ​​と調査しなければならないだろう。

関連する問題