2017-03-14 1 views
0

私は最後の行を見つけることができると私は私の変数を設定してい、しかし、私はこのエラーを取得しています:このオブジェクトは次の行に書き込もうとしました(パイソン/ win32com)

## Export Severity to Qualy Data ## 
## access excel application and open active worksheet ## 
Excel = win32.gencache.EnsureDispatch('Excel.application') 
Excel.Visible = False 
wb = Excel.Workbooks.Open('Qualys Data.xlsx') 
sh = wb.ActiveSheet 

## Find last row ## 
lastRow = sh.UsedRange.Rows.Count 
next_Row = lastRow+1 
print("Next row to print: ", next_Row) 

## Can i loop through the document, if on last_Row/print to last row? 
for line in sh: 
    if desired_row == next_Row: 
     sh.Range("A1:A1").Value = reportDate 

print("Exporting to data to new spreadsheet...") 
time.sleep(1) 

Excel.DisplayAlerts = 0 
wb.SaveAs('Qualys Data.xlsx') 
Excel.DisplayAlerts = True 

Excel.Quit() 

列挙をサポートしていません。基本的には、最後の行に書き込む場合は、next_Rowは書き込み先の行番号を出力します

答えて

0

wb.ActiveSheetを繰り返し処理することができません。そのため、エラーメッセージが表示されます。

あなただけの最初の行の下に1つのセルを追加しようとしている場合は、あなただけの何の列挙を必要としない、そのセルに直接書き込むことができます。

import win32com.client as win32 
from datetime import datetime 
import time 

reportDate = datetime.now() 

Excel = win32.gencache.EnsureDispatch('Excel.application') 
Excel.Visible = False 

wb = Excel.Workbooks.Open(r'e:\python temp\Qualys Data.xlsx') 
ws = wb.ActiveSheet 

## Find last row ## 
lastRow = ws.UsedRange.Rows.Count 
next_Row = lastRow + 1 
print("Next row to print: ", next_Row) 

ws.Cells(next_Row, 1).Value = reportDate 

print("Exporting to data to new spreadsheet...") 
time.sleep(1) 

Excel.DisplayAlerts = 0 
wb.SaveAs('Qualys Data.xlsx') 
Excel.DisplayAlerts = True 
Excel.Quit() 

これはws.Cells(next_Row, 1).Value = reportDate

を使用して行われます

この例では、現在の日付と時刻を追加するだけです。完璧に動作

data = ["cell 1", "cell 2", "cell 3", "cell 4"] 
ws.Range(ws.Cells(next_Row, 1), ws.Cells(next_Row, len(data))).Value = data 
+0

、しかし、私は、このようなコルB、C、Dのように列に応じて、より多くの細胞を、追加したいと思い、次のように使用し、最後の行にリストを書き込むには


e、f、g、hを同じ行に入力してください – davidjbeiler

+0

リスト全体を書くこともできますが、例を追加しました。 –

関連する問題