我有一個程序利用openpyxl打開兩個現有的Excel文件。一種是簡單的工作表,其中需要將數據複製到另一個文件中,這是一個包含許多工作表的工作簿,以及使用此複製數據的VBA宏。但是,當VBA代碼運行時,會出現運行時錯誤6溢出。奇怪的是,如果我手動將所有必需的單元格複製到工作簿中,宏運行順利。但是當這個過程是自動的,即使單元格中的值是相同的,這個錯誤也會彈出來。以下是將數據從一張工作表轉錄到另一張工作表的代碼。OpenpyXL:運行時錯誤6溢出
def transcribe_client_data_to_workbooks():
_active_sheet_index = 5
for client in set(cdict.values()):
report_path = r'C:\Program Files\Notepad++\reports' + '\\' +
string.replace(client,'/','-') + '_report.csv'
wb = openpyxl.load_workbook('Bucket-Asset Allocation Model.xlsm',
read_only = False, keep_vba = True)
ws = wb.active
with open(report_path, 'rU') as f:
reader = csv.reader(f)
for row_index, row in enumerate(reader):
for column_index, cell in enumerate(row):
column_letter = get_column_letter((column_index+1))
ws[column_letter+str(row_index+1)] = cell
f.close()
wb.save('C:\\Program Files\\Notepad++\\workbooks\\' +
string.replace(client,'/','-') + '_workbook.xlsm')
我不明白爲什麼我會收到此錯誤消息時自動複製此數據,但不是當我手動複製/粘貼時。每次迭代打開相同的工作簿模板,然後在複製適當的數據後將其保存爲新工作簿模板。作爲參考,這裏是發生錯誤的VBA代碼部分。
Do Until Sheets("Raw Data").Cells(crow, 1).Value = Empty
aNumber = Sheets("Raw Data").Cells(crow, 1).Value
ticker = Sheets("Raw Data").Cells(crow, 9).Value
security = Sheets("Raw Data").Cells(crow, 8).Value
mValue = Sheets("Raw Data").Cells(crow, 12).Value
bAmt = Sheets("Raw Data").Cells(crow, 18).Value
uGain = Sheets("Raw Data").Cells(crow, 20).Value
Do Until Sheets("Accounts").Cells(acrow, 1).Value = aNumber
acrow = acrow + 1
Loop
具體來說它發生在該遞增線ACROW: ACROW = ACROW + 1 我試圖從一個整數改變ACROW到一個長期的,但只是導致程序無限期運行,直到我點擊或取消,在這一點我收到運行時錯誤'1004',應用程序定義或對象定義的錯誤,在行的增量之前的行。
任何幫助將不勝感激,謝謝!
那麼,Python代碼運行時沒有例外嗎? –
完全沒有。它會在目標文件夾中生成新的填充工作簿,而不會產生任何錯誤。它生成的工作簿與我加載的模板相同,除了附加數據。我將keep_vba設置爲true,但有可能工作簿的某些方面未被保留?讓我知道你是否需要更多的VBA代碼。 –
此外,我剛剛注意到,工作簿模板本身是488 KB,而填充副本是〜180 KB。所有的宏似乎都被保留了下來,但是這是否表明我在加載和重新保存模板時會失去重要的功能? –