WinActor(ウィンアクター)
教えて !! スーさん。
第6回 「PDF内の表データをExcelに取り込む」の巻
目次
- 第6回 「PDF内の表データをExcelに取り込む」の巻1(今回)
- 第6回 「PDF内の表データをExcelに取り込む」の巻2
スーさんと
サーさん、ふたりの会話を通してWinActorの利用方法をお伝えします。

PDFに記載されている内容をExcelに取り込むことができるという話を聞いたのですが、その方法を教えていただけますか。

PDFが画像データの場合はOCR製品等を利用してデータを取得する必要がありますが、
画像データでない場合はExcelのデータの取得機能を使ってデータを取り込むことが可能です。

現状は、定型フォーマットのPDFをメールで取得して、その内容をコピペしてExcelに転記している状況です。
PDFの内容がExcelに取り込めるのであれば、そこを含めてWinActorのシナリオ化ができそうです。

それでは早速やってみましょう。

よろしくお願いします。

今回はこちらのPDFから表データをExcelに取り込みます。


まずは、取り込み対象のPDFファイルを選択して、PDFと同じ場所に取込用のExcelファイルを新規作成します。
①で「スロー実行の設定」を使っています。今回、処理スピードが速すぎて目で追えないため、ノード間で待機時間を設けながら実行するようにしています。
②で初期表示フォルダを設定して、③でPDFファイルを選択するようにしていますが、この部分の詳細については、第1回の 『ファイル選択ダイアログ出力時に任意のフォルダを初期表示させるの巻』で紹介していますので、ご覧になっていない方はそちらも参照してみてください。
①で「スロー実行の設定」を使っています。今回、処理スピードが速すぎて目で追えないため、ノード間で待機時間を設けながら実行するようにしています。
②で初期表示フォルダを設定して、③でPDFファイルを選択するようにしていますが、この部分の詳細については、第1回の 『ファイル選択ダイアログ出力時に任意のフォルダを初期表示させるの巻』で紹介していますので、ご覧になっていない方はそちらも参照してみてください。


それではプロパティの内容を見ていきましょう。
①「スロー実行の設定」です。
ここでは実行速度を3に設定しました。
①「スロー実行の設定」です。
ここでは実行速度を3に設定しました。


②「シナリオフォルダのファイルパス」です。
ファイル名は空欄、ファイルパス生成結果には変数「PDFファイルパス」を設定します。
この操作により「PDFファイルパス」には、シナリオが格納されているフォルダのパスが設定されます。
ファイル名は空欄、ファイルパス生成結果には変数「PDFファイルパス」を設定します。
この操作により「PDFファイルパス」には、シナリオが格納されているフォルダのパスが設定されます。


③「ファイル選択ボックス(Java)」です。
拡張子に「.pdf」、ファイル選択結果に変数「PDFファイルパス」を設定します。
この操作でPDFファイルが選択されると、「PDFファイルパス」に選択したPDFのフルパスが設定されます。
拡張子に「.pdf」、ファイル選択結果に変数「PDFファイルパス」を設定します。
この操作でPDFファイルが選択されると、「PDFファイルパス」に選択したPDFのフルパスが設定されます。


④「変数値コピー」です。
取込用のExcelファイルを新規で作成するにあたり、Excelファイルのパスを生成するための処理になります。
今回はPDFと同じフォルダ配下に同じファイル名(拡張子は異なる)のExcelファイルを作成することにします。
そのためにまずは、変数「PDFファイルパス」を変数「Excelファイルパス」にコピーします。
取込用のExcelファイルを新規で作成するにあたり、Excelファイルのパスを生成するための処理になります。
今回はPDFと同じフォルダ配下に同じファイル名(拡張子は異なる)のExcelファイルを作成することにします。
そのためにまずは、変数「PDFファイルパス」を変数「Excelファイルパス」にコピーします。


⑤「文字列置換」です。
先ほどコピーした変数「Excelファイルパス」の内容は拡張子が「.pdf」のままですので、「.xlsx」に変更します。
これで「Excelファイルパス」に取込用のExcelファイルのフルパスが設定されたことになります。
先ほどコピーした変数「Excelファイルパス」の内容は拡張子が「.pdf」のままですので、「.xlsx」に変更します。
これで「Excelファイルパス」に取込用のExcelファイルのフルパスが設定されたことになります。


⑥「Excel操作(新規作成)」です。
Excelファイルを変数「Excelファイルパス」の内容に従って新規作成します。
変数の「シート名」には、新規作成されたExcelファイルのアクティブなシート名が格納されます。
Excelファイルを変数「Excelファイルパス」の内容に従って新規作成します。
変数の「シート名」には、新規作成されたExcelファイルのアクティブなシート名が格納されます。


ここまでで、取込用のExcelファイルが新規で作成されて、新規Excelファイルが開いた状態になります。

ファイル選択したPDFと同じフォルダに同じファイル名でExcelファイルを作成するというのが良いと思いました。
PDFのファイルパスをコピーして、拡張子を置換すればExcelのファイルパスが完成するので、そのファイルパスで新規作成する、ということですね。
理解しました。勉強になります。

ここからは、PDFから表データを取り込む操作になります。
データ → データの取得 → ファイルから → PDFから の順番に選択します。
この順番に選択する操作ですが、今回はエミュレーションを使ったキー操作で実現することにします。
キー操作の場合は、Alt → A → P → N → F → P の順番にキーを押下することになります。
データ → データの取得 → ファイルから → PDFから の順番に選択します。
この順番に選択する操作ですが、今回はエミュレーションを使ったキー操作で実現することにします。
キー操作の場合は、Alt → A → P → N → F → P の順番にキーを押下することになります。


先ほどのキー操作を⑦と⑧のエミュレーションで実行します。
データの取り込み画面が出るので、ファイル名欄にPDFファイルパスを設定して、開くボタンをクリックします。
データの取り込み画面が出るので、ファイル名欄にPDFファイルパスを設定して、開くボタンをクリックします。


⑦「エミュレーション」です。
AltキーのDown/Up、AキーのDown/Upを実行します。
ウィンドウ識別名は新規作成したExcel画面を選択します。
待機時間を必要により、必要な時間設定するようにします。
AltキーのDown/Up、AキーのDown/Upを実行します。
ウィンドウ識別名は新規作成したExcel画面を選択します。
待機時間を必要により、必要な時間設定するようにします。


⑧「エミュレーション」です。
⑦と⑧の「エミュレーション」を分けているのは、ウィンドウ識別名が異なるためです。⑧ではウィンドウ識別名に「(スクリーン)」を指定しています。
リボンが表示されている場合は、P → Nの操作までを⑦の方で実行しても問題ありませんが、リボンが表示されていない状態の場合は、 ウィンドウ識別名を「(スクリーン)」にして操作する必要があります。
操作内容が全て表示できていませんが、P → N → F → P の順番でDown/Upしています。
⑦と⑧の「エミュレーション」を分けているのは、ウィンドウ識別名が異なるためです。⑧ではウィンドウ識別名に「(スクリーン)」を指定しています。
リボンが表示されている場合は、P → Nの操作までを⑦の方で実行しても問題ありませんが、リボンが表示されていない状態の場合は、 ウィンドウ識別名を「(スクリーン)」にして操作する必要があります。
操作内容が全て表示できていませんが、P → N → F → P の順番でDown/Upしています。


⑨「文字列設定(WIN32)」です。
データの取り込み画面は、自動記録アクション配下にあるWIN32系のライブラリで操作可能です。
ウィンドウ識別名でデータの取り込み画面を選択します。
対象コントロール指定でファイル名の入力欄を選択します。
設定値に変数の「PDFファイルパス」を指定します。
この操作により、ファイル名の入力欄にPDFのフルパスが設定されます。
データの取り込み画面は、自動記録アクション配下にあるWIN32系のライブラリで操作可能です。
ウィンドウ識別名でデータの取り込み画面を選択します。
対象コントロール指定でファイル名の入力欄を選択します。
設定値に変数の「PDFファイルパス」を指定します。
この操作により、ファイル名の入力欄にPDFのフルパスが設定されます。


⑩「クリック(WIN32)」です。
ウィンドウ識別名でデータの取り込み画面を選択します。
対象コントロール指定で開くボタンを選択します。
この操作により開くボタンをクリックします。
データの取り込み画面で、手動でファイルを選択した場合、 「開く」ボタンが「インポート」ボタンに表示名が変わります。 ⑨でファイル名を自動で設定した場合は「開く」ボタンのままです。
そのため、対象コントロール指定をする際には、「開く」ボタンの状態で選択するようにしてください。
ウィンドウ識別名でデータの取り込み画面を選択します。
対象コントロール指定で開くボタンを選択します。
この操作により開くボタンをクリックします。
データの取り込み画面で、手動でファイルを選択した場合、 「開く」ボタンが「インポート」ボタンに表示名が変わります。 ⑨でファイル名を自動で設定した場合は「開く」ボタンのままです。
そのため、対象コントロール指定をする際には、「開く」ボタンの状態で選択するようにしてください。


エミュレーションでキー操作する際のウィンドウ識別名の選択の違いや、
データの取り込み画面のボタン名の変化など注意点があるということですね。
シナリオを作成する際には、その辺りを注意しながら進めるようにしたいと思います。
シナリオを作成する際には、その辺りを注意しながら進めるようにしたいと思います。

上記で開くボタンをクリックすると、ナビゲーター画面が表示されます。
今回は表の部分を取り込むので、「Table001(Page 1)」を選択して読み込みます。
表だけでなくページ全体を取り込みたい場合は、「Page001」を選択することで読み込みができます。
今回は表の部分を取り込むので、「Table001(Page 1)」を選択して読み込みます。
表だけでなくページ全体を取り込みたい場合は、「Page001」を選択することで読み込みができます。


ナビゲーター画面が表示されるまで少し時間がかかる場合がありますので、
ウィンドウ状態待機を使って表示されるまで待つようにしています。
その後にTable001の読み込みを行います。
ここでもエミュレーションによるキー操作で読み込みを実行します。
その後にTable001の読み込みを行います。
ここでもエミュレーションによるキー操作で読み込みを実行します。


⑪「ウィンドウ状態待機」です。
取得結果に変数の「結果」を設定しています。
ウィンドウ識別名でナビゲーター画面を選択します。
取得結果に変数の「結果」を設定しています。
ウィンドウ識別名でナビゲーター画面を選択します。


ここでも注意点があります。
ナビゲーター画面のウィンドウ識別名ですが、識別情報のウィンドウクラス名が変わってしまうようです。
そのため、ウィンドウ識別ルールで、ウィンドウクラス名の識別方式を「一致する」から「指定しない」に変更する必要があります。
ナビゲーター画面のウィンドウ識別名ですが、識別情報のウィンドウクラス名が変わってしまうようです。
そのため、ウィンドウ識別ルールで、ウィンドウクラス名の識別方式を「一致する」から「指定しない」に変更する必要があります。


⑫「エミュレーション」です。
ウィンドウ識別名でナビゲーター画面を選択します。
操作内容は全てが表示されていませんが、以下の操作を行っています。
TabキーのDown/Upを5回 → DownキーのDown/Up → EnterキーのDown/Upの順番でキー操作を行っています。
ウィンドウ識別名でナビゲーター画面を選択します。
操作内容は全てが表示されていませんが、以下の操作を行っています。
TabキーのDown/Upを5回 → DownキーのDown/Up → EnterキーのDown/Upの順番でキー操作を行っています。


上記の操作により、PDFの表データをExcelに取り込むことが出来ました。
この状態でも良ければExcelを上書き保存するなどして、後続の処理を進めればよいと思います。
この状態というのは、クエリが含まれているとか、テーブルの設定がされている状態ということです。
クエリを削除したり、テーブル設定を解除したい場合は、引き続き操作手順を示しますので、そちらを参照してください。
この状態でも良ければExcelを上書き保存するなどして、後続の処理を進めればよいと思います。
この状態というのは、クエリが含まれているとか、テーブルの設定がされている状態ということです。
クエリを削除したり、テーブル設定を解除したい場合は、引き続き操作手順を示しますので、そちらを参照してください。


PDFの表データの取り込みが出来ましたね。
きれいな感じで表データが取り込めることがわかって感激です。
あと、ウィンドウ識別ルールで、ウィンドウクラス名の識別方式を「指定しない」に変更する場合があるんですね。 ビックリです。始めて遭遇しました。
きれいな感じで表データが取り込めることがわかって感激です。
あと、ウィンドウ識別ルールで、ウィンドウクラス名の識別方式を「指定しない」に変更する場合があるんですね。 ビックリです。始めて遭遇しました。
目次
- 第6回 「PDF内の表データをExcelに取り込む」の巻1(今回)
- 第6回 「PDF内の表データをExcelに取り込む」の巻2