2つの既存のExcelファイルを開くopenpyxlを利用したプログラムがあります。 1つは、多数のワークシートを含むワークブックと、このコピーされたデータを使用する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 + 1 acrow私は長いの整数からacrowを変更しようとしたが、私はそれをクリックするか、またはキャンセルされるまで、それはちょうど、プログラムが無期限に実行させますその時点で、acrowのインクリメントの直前の行にランタイムエラー '1004'、アプリケーション定義またはオブジェクト定義エラーが表示されます。
ありがとうございます、ありがとうございます!
したがって、Pythonコードが実行されても例外はありません。 –
全くありません。エラーを発生させることなく、コピー先のフォルダに新しい埋め込みワークブックを生成します。作成するワークブックは、追加データを除いてロードしたテンプレートと同じです。 keep_vbaをtrueに設定しましたが、ワークブックの一部の部分が保持されていない可能性がありますか? VBAコードがもっと必要な場合は教えてください。 –
さらに、ワークブックのテンプレートは488 KBであるのに対して、塗りつぶされたコピーは〜180 KBであることに気がつきました。すべてのマクロが保存されているように見えますが、これはテンプレートをロードして再保存するときに重要な機能が失われていることを示していますか? –