2011年02月24日

PDFファイルの表テーブルをExcelワークシートへコピー

・・・するのが手間という話しになり。。。



PDFは出力時の設定によって、生成後のPDFファイルの「二次活用」を制限できる。



ここにきて、外部文書のPDFを使用しようとする人たち、すなわちマスター文書を持っていない人(笑)が、文章ならコピペできるにしろ、そのデータが表テーブルの体を成している場合は、とっても扱い辛い、という指摘があった。。。そういうもんだ(笑)、と思うケド、クライアントさんが「二次利用者」側の方なら、その意向を叶えるものを作らなきゃ(苦)。。。



とりあえず、状況の確認。



PDFの表データをExcelワークシートへコピー

PDF上の表テーブルを選択して、コピー・・・。バージョンによって表の体のままコピーできるのもあるようだけど現行バージョンでは出来なくなっている模様。。。





PDFの表データをExcelワークシートへコピー
Excelワークシート上にペースト・・・。失敗(笑)。各項目のデータに改行コードが入っている模様。。。表テーブルの体にもならない。





PDFの表データをExcelワークシートへコピー

AcrobatReaderのテキスト出力でできたCSVをExcelで開くも、区切り文字を伴っているデータではないので、区切りがバラバラ。。。データの内容に依存するのでダメ。。。また、前処理でUnicodeの変換も必要という手間も。。。





PDFの表データをExcelワークシートへコピー

それじゃぁOCRで読み取ろうと、伝家の宝刀SmartOCRで読もうとしたら、文字認識の精度を保つためには大きなキャプチャが必要。。。でもキャプチャしようが無いので断念。。。





PDFの表データをExcelワークシートへコピー

ググッたら、ワードパッドが有効ということなので。。。やってみたら空白項目がダルマ落としに詰って、表テーブルが崩れてダメ。。。





PDFの表データをExcelワークシートへコピー

コピペ先がExcelワークシート上なのだし、端からVBAマクロを組めば。。。で、組んだ。PDF上の表を選択してコピー(表データを取得)し、表の列数を手入力で再設定。このデータ表は11列なので11と入力。。。





PDFの表データをExcelワークシートへコピー

理屈は「11列」とは、二次元配列の添字。行数は可変で読み取りデータから自動計算。。。おっと、項目の空白欄は、取得した時点で既にスキップされているので詰っているから、ゼブラに見える。。。





PDFの表データをExcelワークシートへコピー

そこで、ユーザーの作業として、セルをダブルクリックすると、ダルマ落とし方式で後続するデータを次項目欄へ落とすマクロを加える。理屈は、先頭が1個ずれると後続データがすべて「1個」ずれるので、11列目全体を1列目の位置へ切り取り・挿入することでコードを短く書いてます。



もちろん、データ表中の項目が全て埋まっている場合は、PDFファイルの表をExcelワークシートに一発でコピーは完了します。



PDFファイルを直接ゴニョゴニョするのは国際法に・・・だから、これでいかな(笑)

posted by くきお at 18:26| Comment(0) | VBAマクロソフト | このブログの読者になる | 更新情報をチェックする