「Excelデータをプログラムで扱うのなら、VBA(Visual Basic for Applications)を使うべし」。多くの人はそう思っているでしょう。もちろんVBAはMicrosoft Officeのソフトを操るのにとても便利なプログラミング言語ですが、弱点もあります。
その1つが、Officeにしばられてしまうこと。業務に必要なデータ量がExcelや「Access」のカバーする範囲で収まらなくなったら、もう扱えません。
また互換性の問題から、Windows上で書かれたVBAのソースコードは基本的に、macOSやLinuxでは動かせません。VBAはプログラミング初心者にとって理解しやすい一方で、コードが冗長になりがちという側面もあります。
今からプログラミングを学んで業務を自動化したいなら、筆者はPythonをお薦めします。Pythonはシンプルで勉強しやすく、ライブラリーが豊富で用途が広いという利点があります。Pythonを使えば、Excelを起動せずともExcelファイルからデータを取り出したり、加工したりできるのです。
本特集では、Pythonのソースコードを紹介しながら、Excelデータを操作する方法を解説します。
売上伝票の転記作業を、Pythonで自動化しよう
題材にするのは、「サーバーに保存された売上伝票(Excelデータ)をWeb販売管理システムに入力するため、csvファイルに転記する」作業。こうした作業は、どんな会社でも多かれ少なかれあるのではないでしょうか。この作業を、Pythonを使ってできる限り自動化します。
現状で手作業になっている作業は、以下の2つと仮定します。
- サーバー上の売上伝票を目で見て内容を読み取る
- 売上伝票の内容をWeb販売管理システムに入力する
①も②も手作業なので、売上伝票の枚数がたくさんになると大変です。
まず、①の1つずつ売上伝票ファイルを開いて内容を拾い出してくる作業を自動化してみましょう。そして、読み出した情報をCSVファイルにまとめることができれば、一括して販売管理システムに読み込ませられます。これで②も解決できそうです。これなら、作業者の手間をかなり減らせますね。
ここでは、次の図のようなフォルダーに必要なデータが保存されていると想定してみます。
プログラムのあるpython_prgフォルダーと同じ階層にdataフォルダーがあり、さらにその中にsalesフォルダーが作られています。そこに担当者コードをファイル名とする売上伝票データが保存されています。
Excelのファイルはワークブック形式です。ワークブックには複数のワークシートがあります。
salesフォルダーにある複数のワークブックを開いて、その中の複数のシートから、売上伝票の内容を売上一覧シートに転記していくわけですね。
ここでは、以下のようなデータがやり取りされているとします。
売上伝票データは、担当者ごとにワークブックを作ってあります。そして、1つのワークシートに1通の売上伝票が記入されています。ですから、1つのワークブックの中には1枚以上のワークシートがあることになりますが、何枚あるかは担当者によって異なります。
売上伝票は次の図のようになっており、薄い色で網かけをしている部分の情報を、売上一覧シートに転記します。