エクセルのコピペ シートまるまるコピー
エクセルを開いて、全選択してコピーして、別のエクセルを開いて、貼り付ける。
という作業を自動化したイメージ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
import openpyxl # コピーしたいファイル inwb = openpyxl.load_workbook(r"C:\Users\oono\Desktop\抽出データ.xlsx") # ペーストしたいファイル outwb = openpyxl.load_workbook(r"C:\Users\oono\Desktop\任意データ.xlsx") # シートを選択(activeは現在開いているシート) inws = inwb.active outws = outwb.active # シート名が決まっている場合は以下のようにシート名を指定する。 # outws = outwb["シート名"] # 最終行を取得。(一番下が何行まであるか)rowは行。1行目、2行目、3行目・・・ rows = inws.max_row # 最終列を取得。(一番横が何列まであるか)columnは列。A列、B列、C列・・・ columns = inws.max_column # 一列(横)をコピーして新しいところへ貼り付けるための関数 def input_excel(row_num): # コピーしたデータを入れるための空のリスト in_list=[] # どこからどこまでの列をコピーしたいのか設定する。 start_col="A" goal_col ="CH" # A1:CH1 で数字の部分がrow_numで関数の引数に設定しているため最終行まで変更されていく。 ranges = start_col + str(row_num) + ":" + goal_col + str(row_num) # in_listにコピーしたい行を追加していく。 for i in inws[ranges]: for a in i: in_list.append(a.value) # in_listに追加されたデータをコピペしたいシートへ貼り付ける。 outws.append(in_list) # コピペしたら保存する。 outwb.save(r"C:\Users\oono\Desktop\任意データ.xlsx") # コピー元のデータが入っている最終行までforで繰り返して、row_numへ数字を渡す。 for i in range(rows): i+=1 print(i) input_excel(i) # ペースト元の一番上の行が空白になるので削除する。 outws.delete_rows(1) # 保存する。 outwb.save(r"C:\Users\oono\Desktop\任意データ.xlsx") # 閉じる inwb.close() outwb.close() |
コピペ元のエクセル、横が86列で、行が500行でやってみたら、完了するばで1~2分かかった。
活用イメージ
会社で数字報告などがある場合、CRMからCSVやエクセルデータを抽出して、あらかじめ数式がはいっているエクセルに貼り付けたら、集計されて、報告書が出来上がる。
みたいな時、seleniumでログインして、データをダウンロードして、それをコピペして貼り付けて、報告書が出来上がる!みたいなイメージ。
1.seleniumでCRMからデータをダウンロードしてくる
2.ファイル操作でファイルを移動させる
3.ファイルを開いて任意の報告書のテンプレートへ貼り付ける←これの記事
4.社内コミュニケーションツールへ提出(API)を使う
5.1~4の流れを毎週金曜日の18:00とかで設定しておいて、自動で実行させると楽。