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

vol.23

  • コツ・知識
  • メールマガジン
  • 他社事例

Pythonを用いたお悩み解決事例集
~PDF操作・定期実行・VBA操作

今回は、弊社でお客様から伺った悩みをもとに「PDF操作・定期実行・VBA操作」についてお伝えします。

(約5分で読めます)

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


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

製造業界の方や建築業界の方からよく以下のようなお話を伺います。
PDFファイルから特定の場所にある製造番号を読み取って、製造番号ごとに自動で保存先のフォルダを指定することはできますか。

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

Pythonには「PDFMiner」や「PyMuPDF」というライブラリがあります。
こちらを活用すれば、以下のようにPythonでPDFから文章を抽出することができます。



しかし、PythonでPDFを操作するのはExcel自動操作よりも難しいです。

理由としては以下の2点です。
1 文字化けが発生する可能性がある
特に日本語文字列を扱う際は、データを読み込む際の文字コードとPDFを作成した際に使用した文字コードの違いから、文字化けが発生することがあります。

2 手書き文字の場合は、文字の認識・整形を行う必要がある
元のPDFのデータが、パソコンを使って打ち込んだ文字であれば、文字化けにさえ気を付ければ自動化は行いやすいです。
しかし、手書き文字を含むPDFからテキストを抽出する場合は、「OCR」などの技術を用いて、手書き文字をコンピュータが読み込める形に整形する必要があります。
例えば、製造部の方が手書きで書類に製造ロット番号を書き込み、その書類をスキャンしてPDFにしているといった場合は、別途整形する必要があります。

※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


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

こちらは主に営業部の方から伺ったお悩みです。
毎日チームメンバーに対して、自社システムから集計した1日の架電件数をメールで送っており、毎日17時に自動でメールが送信されるようにしたい。

結論から申し上げますと、Pythonで作成したプログラムを登録することで、
お使いのPCの機能の「タスク スケジューラ」から定期的に実行することが可能です。

※前提として、Pythonを使って「自社システムから架電量を取得し、メールを作成するプログラム」を作成する必要がございます。


タスク スケジューラ」から自動化する際には「自社システムから架電量を取得し、メールを作成するプログラム」をexeファイル(実行ファイル)に変換する必要があります。

※exeファイルについては、以下の記事で解説しています。
https://www.insource.co.jp/python-gakuin/mail-backnumber/vol18.html


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

Pythonを用いたタスクスケジューラの活用ついては、以下の研修で解説しています。近日中に公開講座(オープンセミナー型)での開催も予定しております。
・(中級者向け)Python学院~業務活用実践編(半日間)
https://www.insource.co.jp/digital-transformation/python_automation_half.html

【参考】
Pythonで定期実行を行う際には「Schedule」というライブラリを利用する方法もあります。
しかし、こちらの「schedule」ライブラリを使用する方法では、実行したい時刻にPC内で対象のプログラムを動かしている必要があります。
そのため営業の方などノートPCを持ち歩いて頻繁に電源のON/OFFがあるという方には、上記の方法をお勧めしております。


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

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

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

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


4. 最後に

いかがでしたでしょうか。インソースのPython学院では、毎日のようにお客さまとお話させていただいており、「あるあるのお悩みと解決方法」が蓄積されております。
この業務にPythonは使えますか」というお悩みございましたら、ぜひ一度Python学院までご連絡ください。
最後までお読みいただき、ありがとうございました!
本記事が少しでも業務効率化やプログラミング学習検討の助けになりましたら幸いです。

関連研修