私の同僚は、コードの使用に慣れていないため、ビジネスニーズとして、VBAは適当でないかもしれません
元の包装とPythonコードにこのようにVBAコード、改善するために、後続の機会を行います
完全なコード
インポートxlrdする インポートxlwt から xlutils.copy インポートコピー から Tkinterのインポート * DEFの:runl() QT1、QT2 = 0,0 #オープン形式のtry : ワークブック(R&LT = xlrd.open_workbook 'fendan.xlsx \\ ' ) を除い: TXT .insert(END、' オープンテーブルが失敗し、テーブルはfendan.xlsx作成されているかどうかを確認してください' ) txt.insert(END、' \ N- ' )#は、名前の取得 = sheet_namesを workbook.sheet_names() #获取对象 シート1 = workbook.sheet_by_name(' シート1 ' ) ##wb = xlwt.Workbook(R '\\ fendan.xlsx') ##ws = wb.get_sheet(0) WRITE_DATA = コピー(ブック) write_save = write_data.get_sheet(0) NROWS = sheet1.nrows #前处理、将号取消尾数订单 用 I における範囲(1 、NROWS): 場合 はない sheet1.cell_value(rowx = I、COLX = 1): 10] == '' :# #印刷(sheet1.cell_value(rowx = I、COLX = 1)[10]) #iが10 3行番号を書き込む前に2つのi行目を取る write_save.write(I、2 sheet1.cell_valueを(私は= rowx、COLX = 1)。[10 ]) write_data.save(' fendan2.xlsx ' ) #オープンテーブル Workbook2 = xlrd.open_workbook(R&LT 'fendan2.xlsx \\ ' ) #は、オブジェクト取得 シート2 = workbook2.sheet_by_name(' シート1 ' ) write_data2 = コピー(Workbook2) write_save2 = write_data2.get_sheet(0) #のセット書き込みをパターンに1 font0 = xlwt.Font() PATTERN1 = xlwt.Pattern() pattern1.pattern =xlwt.Pattern.SOLID_PATTERN pattern1.pattern_fore_colour = 5 style0 = xlwt.XFStyle() style0.pattern = PATTERN1 #设置写入样式2 PATTERN2 = xlwt.Pattern() pattern2.pattern = xlwt.Pattern.SOLID_PATTERN pattern2.pattern_fore_colour = 5 pattern2.pattern_fore_colour = 2 STYLE1 = xlwt.XFStyle() style1.pattern = PATTERN2 NROWS = sheet2.nrows ための K における範囲(1、NROWS)。 のために、R での範囲(1 、NROWS): 場合 はない(rowx = Kをsheet2.cell_value、COLX = 2)== ' : #1 #印刷(K、R) 場合 sheet2.cell_value(rowx = R、 COLX = 2)== sheet2.cell_value(rowx = K、COLX = 5 ): # #印刷(sheet2.cell_value(rowx = R、COLX = 2)、sheet2.cell_value(rowx = K、COLX = 5)) ##プリント(sheet2.cell_value(rowx = R、COLX = 2)== sheet2.cell_value(rowx = K、COLX = 5)) であれば sheet2.cell_value(rowx = R、COLX = 3)== sheet2.cell_value(rowx = K、COLX = 6 ): ##プリント(sheet2.cell_value(rowx = R、COLX = 3)、sheet2.cell_value(rowx = K、COLX = 6)) #1 #プリント(sheet2.cell_value(rowx = R、COLX = 3)== sheet2.cell_value (rowx = K、COLX = 6)) write_save2.write(R、2、sheet2.cell_value(rowx = R、COLX = 2)、スタイル= style0) write_save2.write(R、 3、sheet2.cell_value(rowx R = 、COLX = 3)、スタイル= style0) write_save2.write(K、 5、sheet2.cell_value(rowx = K、COLX = 5)、スタイル= STYLE1) write_save2.write(K、 6、sheet2.cell_value(rowx = K 、COLX = 6)、スタイル= STYLE1) QT1 = QT1 + sheet2.cell_value(rowx = R、COLX = 3 ) QT2 = QT2 + sheet2.cell_value(rowx = K、COLX = 6 ) ##プリント(sheet1.row_values(rowx = R、start_colx = 2、end_colx = 7)) write_data2.save(' fendan2.xlsx ' ) #1 #プリント(QT1、QT2) txt.insert(END、' 区分完毕' ) txt.insert(END、' \ n ' ) txt.insert(END(QT1、QT2)) txt.insert(END、' \ n ' ) ルート = Tkの() root.title(' 区分订单' ) ルート。ジオメトリー(' 460x300 ' ) LB1 =ラベル(根、テキスト= "Excelスプレッドシート、それぞれ、第3、4つ、6つ、7つ、および注文の数を入力してください' ) lb1.place(relx RELY = 0.1 = 0.1、relwidth = 0.8、relheight = 0.1 ) BTN1 =ボタン(ルート、テキスト= ' このボタンをクリック、閉じる入力Excelスプレッドシートを終了します"、コマンド= runl) btn1.place(relx、= 0.2を0.2 = RELY、relwidth = 0.6、relheightは= 0.3 ) TXTは = テキスト(ルート) txt.placeは(RELY = 0.6、 = 0.3 relheight ) Lb2とは、ラベル(ルート、テキストを= = ' OF:YBXの' ) lb2.place(relx = 0.8、RELY = 0.9、relwidth = 0.2、relheight = 0.1) Root.mainloop()
彼は、以下の参考文献に感謝の意を表明しました。