Python学院
メールマガジンバックナンバー

vol.23

  • コツ・知識
  • メールマガジン

Pythonでできること①
~VBA操作、PDF抽出、定期実行

弊社ではPythonを用いて組織の課題解決のお手伝いをしています。
今回は、弊社でお客様から伺った悩みをもとに
具体的にPythonでできること」についてお伝えします。

(約5分で読めます)

~~~~~~~~~目次~~~~~~~~~
1. PythonでVBAを動かす
2. PythonでPDFから文章を抽出する
3. 毎日決まった時間にPythonを実行する(定期実行)
4. 最後に
~~~~~~~~~~~~~~~~~~~~


1. お悩み「PythonでVBAを動かすことはできますか?」

こちらはすでに、Excel業務をVBAで自動化しているお客さまから
以下のようなお話を伺いました。
Pythonを今後使用したいが、
今までvbaで自動化している部分をPythonで修正するのには時間がかかる。
そのため、現在使用しているVBAの自動化プログラムは残しつつ、
Pythonを使ってVBA自体を起動したい。

結論から申し上げますと、PythonでVBAを起動することは可能です。
Pythonを用いて、色々な方法で自動化を行うことができますが、
今回はその中の一つをご紹介いたします。

Pythonのライブラリ「pywin32」を活用する。
Pythonの便利ツールであるライブラリの一つ「pywin32」でVBAを動かすことができます。
詳しくはここでは述べませんが、VBAのプロシージャ名と
Excelファイルの名前などがわかっていれば自動化をすることが可能です。

このライブラリを使えば、システムを動かしてExcelファイルを出力する部分は、
Pythonで自動化をし、Excelファイルの連携などの自動化については、
Pythonを使ってVBAを起動して自動化するということもできるようになります。




2. お悩み「PythonでPDFから文章を抽出することはできますか?」

こちらは特に、製造業の方からよくお話を伺います。

PDFファイルから特定の場所にある製造番号を読み取って、
製造番号ごとに自動で保存先のフォルダを指定することはできますか

結論から申し上げますと、PythonでPDFの文章を抽出して、
仕分けを自動化することは可能ですが、難易度が高い場合があります。


Pythonには「pyPDF2」というライブラリがございます。
こちらを活用すれば、PythonでPDFから文章を抽出することはできます。
しかし実際問題として、PythonでPDFを操作するのはExcel自動操作より難易度は高まります。

理由として2点ございます。
1 文字化けが発生する可能性がある
2 手書き文字の場合は、文字の認識を行う必要がある

1について
特に日本語文字列を扱う際に、文字化けを起こす可能性が高くなります。
理由として、PDFをデータ化して読み込む際の文字コードの違いが挙げられます。
詳しくは述べませんが、コンピュータ上のデータを読み込む際に
PDFを作成した際に使った文字コードとは別の文字コードで、
PythonからPDFのデータを抽出してしまうと、エラーが起こる可能性があります。

2について
元のPDFのデータが、パソコンを使って打ち込んだ文字ですと、
文字化けにさえ気を付ければ自動化は行いやすいのですが、
製造業や建築業の方ですと、製造部の方が手書きで書類に製造ロット番号を書き込んでいる。
そして、その書類を読み込んでPDFにしているという場合がございます。
そのような場合は、「OCR」などの仕組みを用いて
手書き文字をコンピュータが読み込める形に整形する必要がございます。

※OCRにつきましては、以下の記事もご確認いただけますと幸いです。
https://www.insource.co.jp/python-gakuin/mail-backnumber/vol54.html


以上2点から、
PythonでPDFから文章を抽出することはできるが、難易度が高い場合がある
という回答になります。

PDF業務の自動化に興味がございましたら、こちらの研修もご確認ください。
・Python学院~PDF操作自動化編(1日間)
https://www.insource.co.jp/bup/bup-python-pdf.html


3. お悩み「毎日決まった時間にPythonを実行することはできますか?」

こちらは主に営業部の方から、以下のようなお話を伺います。
毎日お客さまに、訪問後の御礼メールを送っており、
毎日17時に自動で御礼メールを送りたい

結論から申し上げますと、Pythonで自動化することは可能ですが、
お使いのPCの機能の「タスク スケジューラ」から定期的に実行することも可能です。


前提として、Pythonを使って「訪問したお客さまの情報から、
メールをお客さまにお送りするプログラム」を作成する必要がございます。
下記の部分ではそのあとにPythonを使って定期実行を行う方法と、
PythonではなくPCの機能を使って自動化する方法の2通りを紹介します。

Pythonで定期実行を行う際には「Schedule」というライブラリを利用しますと、
毎日決まった時間にPythonで自動化を行うことが可能です。
しかし、こちらの「schedule」ライブラリを使用する方法では、
その前にPythonを起動することを前提としていますので、
営業の方などノートPCを持ち歩いて頻繁に電源のON/OFFがあるという方には、
もう一つの方法をお勧めしております。

タスク スケジューラ」から自動化する際には「訪問したお客さまの情報から、
メールをお客さまにお送りするPythonプログラム」をexeファイルに変換する必要があります。

exeファイルに関しましては 「Pythonで作成した自動化ツールを、
第三者に配布する方法
https://www.insource.co.jp/python-gakuin/mail-backnumber/vol18.html
で解説しておりますので、そちらも併せてご覧ください。

exeファイルに変換した後は、PCで「タスク スケジューラ」を起動し
「タスク作成」から「毎日17時に実行」を選択するだけです。
ただし、「タスク スケジューラ」はWindowsの機能となりまして、
MacやLinuxユーザーの方は、他のツールの活用をご検討いただく必要がございます。


4. 最後に


いかがでしたでしょうか。インソースのPython学院チームでは、
7月から毎日途切れることなくお客さまとお話させていただいた
あるあるのお悩みと解決方法」が蓄積されております。
この業務にPythonは使えますか」というお悩みございましたら、
ぜひ一度Python学院チームまでご連絡ください。


最後までお読みいただき、ありがとうございました!
「インソースのPythonマガジン Vol.23」は、これで以上となります。

このメルマガでは今後も、Python学習に関するお役立ち情報、また社内のDX化を
主導するための具体的な方法や、弊社や他社さまのPython活用の事例など、
ビジネスの現場で真に活かせる有益な情報の提供を行ってまいります。

それでは、来年もどうぞお楽しみに!

関連研修