【Pythonで時短!】初心者でも簡単!Excel自動操作で業務効率化

この記事で分かること

  • Pythonを使った業務改善の例
  • Pythonでエクセル操作を自動化する方法
かりん

事務作業してるとエクセル操作が多くて面倒くさい

なおひ

決まった操作は自動化すると楽だよ

かりん

どうやったら自動化できるの?

今回はプログラミングでエクセル操作を自動化する方法をご紹介します。

実際に僕がPythonで行っているエクセル操作の自動化方法について紹介します。

なおひ

ソースコードも載せているのでコピペして使ってください!

こんな人にオススメ

  • エクセル操作の手間を減らしたい人
  • Pythonを使った業務効率化事例を知りたい人
  • Pythonでエクセル操作する方法を知りたい人
ゼロから始めるPython入門講座(オンライン・無料)+【テックジム】
目次

自動化するエクセル操作

かりん

どんな操作が自動化出来るの?

Pythonを用いることで手動で行っているエクセル操作の大部分は自動化することが出来ます。

今回自動化方法を紹介する操作は以下の通りです。

今回自動化する操作

  • エクセルファイルのデータを読み込む
  • エクセルファイルへデータを書き込む
  • エクセルシートをコピーする
  • シートに罫線を書き込む
なおひ

どれも事務作業でエクセルをいじる時に発生するものですね

かりん

一つ一つは大したことないけど面倒くさいんだよね

デモアプリの動作

今回は僕が実際に仕事で使ったものを出してしまうと会社特有のフォームなどが分かってしまいます。

そのため、デモ用にアプリを作ったためその動作をご紹介します。

なおひ

実際使う時は中身を組み合わせながら使って頂ければOKです

STEP
エクセルファイルからセル内のデータを読み込み表示

サンプルファイル「read_sample.xlsx」より「読み込みテスト」シートのデータを読み取ります。

データを読み取るセルはA1、A2、B2です。(赤枠部分)

その後、読み取ったデータをコマンドプロンプト上に表示します。

STEP
エクセルファイルのセルへデータを書き込み

サンプルファイル「write_sample.xlsx」の「書き込みテスト」シートへデータを書き込みます。

データを書き込むセルはA1、B2、C3です。

書き込むデータは先ほど読み込みテストの時に取得したデータです。

以下の図のように書き込まれます。

STEP
エクセルファイルのシートをコピー

サンプルファイル「copy_sample.xlsx」の「コピーテスト」シートをそのままコピーします。

コピーしたシートの名前は「コピー後」としています。

コピー前はこちら↓

コピーした後がこちら↓

STEP
エクセルファイルのセルへ罫線を書き込み

サンプルファイル「line_sample.xlsx」の「罫線テスト」シートへ罫線を記入します。

今回、B3セルの周囲に太字の罫線を引いています。

エクセル自動操作のソースコードとライブラリ

かりん

どうやったら作れるの?

際に今回作ったデモアプリのソースコード全文と各要素の動作について説明します。

動作環境

動作環境

OS:Windows10

バージョン:Python 3.8

ソースコード全文

今回のソースコードは以下の通りです。

ソースコード

#!python3

import openpyxl as ox
from openpyxl.styles.borders import Border,Side

#エクセルファイル読み込み
read_file_path =r"./read_sample.xlsx"

read_file = ox.load_workbook(read_file_path,data_only="True")
read_sheet = read_file["読込テスト"]
text1 = read_sheet["A1"].value
text2 = read_sheet["A2"].value
text3 = read_sheet["B2"].value

print(text1,text2,text3)

read_file.close()

#エクセルファイル書き込み
write_file_path = r"./write_sample.xlsx"

write_file = ox.load_workbook(write_file_path)
write_sheet = write_file["書込テスト"]
write_sheet["A1"]=text1
write_sheet["B2"]=text2
write_sheet["C3"]=text3

write_file.save(write_file_path)
write_file.close()

#シートのコピー

copy_file_path = r"./copy_sample.xlsx"

copy_file = ox.load_workbook(copy_file_path)
copy_sheet = copy_file.copy_worksheet(copy_file["コピーテスト"])
copy_sheet.title = "コピー後"

copy_file.save(copy_file_path)
copy_file.close()

#罫線の書き込み

line_file_path = r"./line_sample.xlsx"

contents_side = Side(style="thick",color="000000")
contents_border = Border(top=contents_side,bottom=contents_side,left=contents_side,right=contents_side)

line_file = ox.load_workbook(line_file_path)
line_sheet = line_file["罫線テスト"]

line_sheet["B3"].border = contents_border

line_file.save(line_file_path)
line_file.close()

順にpythonで実現可能な操作について説明していきたいと思います。

使用したライブラリ

今回使用したライブラリは以下の通りです。

ライブラリ

import openpyxl as ox             #エクセル操作自動化ライブラリ
from openpyxl.styles.borders import Border,Side    #エクセル罫線描画ライブラリ

ライブラリは事前に以下のコマンドを入力しておくことでインストールできます。

openpyxlのインストール

pip install openpyxl

エクセルファイルデータの読み込み

エクセルファイルよりデータを読み込む時に指定すべきパラメータは以下の通りです。

指定するパラメータ

  • ファイルのパス
  • シート名
  • 読み込むセル

それぞれソースコードの以下の部分で指定しています。

パスの指定

read_file_path =r"./read_sample.xlsx"

ファイルパスを指定したら読み込みファイルをプログラム内で開きます。

ファイルを開く

read_file = ox.load_workbook(read_file_path,data_only="True")

ファイルを開いたらシート名とセルを指定します。

シート名を指定

read_sheet = read_file["読込テスト"]

セルを指定

text1 = read_sheet["A1"].value
text2 = read_sheet["A2"].value
text3 = read_sheet["B2"].value

実行するとエクセル内のデータを読み取り出来ます。

なおひ

基本的にこの形で全てデータの読み込みができます

エクセルファイルへのデータ書き込み

データ書き込み時も読み込み時と同じように以下のパラメータの指定が必要です。

指定するパラメータ

  • ファイルのパス
  • シート名
  • 読み込むセル

それぞれ以下の通りに指定します。

パスの指定

write_file_path = r"./write_sample.xlsx"

読み込み時と同様に書き込むファイルをプログラム内で開きます。

ファイルを開く

write_file = ox.load_workbook(write_file_path)

ファイルを開いたらシート名とセルを指定します。

これも読み込み時と同じです。

シート名を指定

write_sheet = write_file["書込テスト"]

セルを指定して

write_sheet["A1"]=text1
write_sheet["B2"]=text2
write_sheet["C3"]=text3

実行すると先ほど読み込んだデータの書き込みが行われます。

なおひ

流れは基本的に読み込み時と同じです。

エクセルシートをコピーする。

エクセルのシートをコピーするときは「copy_worksheet」のモジュールを使用します。

エクセルシートコピー時には以下のパラメータの指定が必要です。

指定するパラメータ

  • ファイルのパス
  • シート名

パスの指定

copy_file_path = r"./copy_sample.xlsx"

パスを指定したらシートをコピーしたいファイルをプログラム内で開きます。

ファイルを開く

copy_file = ox.load_workbook(copy_file_path)

シート名を指定してコピーします

シート名指定

copy_sheet = copy_file.copy_worksheet(copy_file["コピーテスト"])

コピーしたシートの名前をここで決定します。

ここでは「コピー後」という名前で指定します。

新シート名決定

copy_sheet.title = "コピー後"

実行するとコピーテストと同じ内容のシートがコピー後という名前で作られます。

なおひ

基本的な流れは読み込み、書き込みと変わりません。

罫線の書き込み

罫線を引くときには「Border」と「Side」のモジュールを使用します。

最初にBorderとSideで罫線の太さと色を指定します。

太さと色を指定

contents_side = Side(style="thick",color="000000")
contents_border = Border(top=contents_side,bottom=contents_side,left=contents_side,right=contents_side)

次に、上で定義した罫線を引く位置を指定します。

ファイル、シート名、セルを指定して罫線を引きます。

罫線の描画

line_file = ox.load_workbook(line_file_path)
line_sheet = line_file["罫線テスト"]

line_sheet["B3"].border = contents_border

実行すると四辺すべてに太いに罫線が引かれます。

まとめ

今回紹介したコードを組み合わせることで色々なエクセル作業を自動化できます。

自分の作業を洗い出してみて面倒な部分は自動化してあげましょう。

なおひ

その分クリエイティブな仕事に時間が使えますよ!

かりん

無駄作業は減らしてこう!

その他のPythonによる業務効率化事例は以下の記事で紹介します。↓

今回の内容は以上になります。

ここまで読んでくださりありがとうございました。

ゼロから始めるPython入門講座(オンライン・無料)+【テックジム】

にほんブログ村に参加しています!良ければ応援ポチ頂けると嬉しいです↓

ブログランキング・にほんブログ村へ PVアクセスランキング にほんブログ村

スポンサーリンク↓




よかったらシェアしてね!

この記事を書いた人

余裕ある人生を追及しています。
僕の挑戦を記事にしています。

コメント

コメントする

目次
閉じる