- ベストアンサー
ExcelVBA+xdoc2txtでデスクトップのファイルをコンバートする方法
- ExcelVBAとxdoc2txtを使用して、デスクトップのファイルをPDFからtxtに変換する方法について説明します。
- xdoc2txt.exeとpdfファイルがデスクトップに存在する場合に問題が発生する可能性があります。
- ファイル名にスペースが含まれる場合、ダブルコーテーションで囲む必要があるかもしれませんが、それでも動作しない場合があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 "C:\Documents and Settings\hogehoge\デスクトップ\xdoc2txt\xdoc2txt.exe" -f "C:\Documents and Settings\hogehoge\デスクトップ\PDF\xxx.pdf" EXE のパスと変換対象のファイルのパスともにダブルクォーテーション(WQ) で括ります。 "EXEのパス" -f "変換対象ファイルのパス" コマンドラインは 半角 SP がパラメータ区切りとして認識されてしまいます ので、半角 SP が含まれるパスは全て WQ で括る必要があります。
その他の回答 (1)
- KenKen_SP
- ベストアンサー率62% (785/1258)
投稿後、ふと思ったのですが。。 > ExcelVBA+xdoc2txtを使い、以下の手順でPDFをtxtに変換します。 VBA を使うならわざわざ EXE ではなく、xdoc2txt.ocx を使った方が 何かと都合が良い気がしますね。 最近、類似の質問に回答してます。 http://oshiete1.goo.ne.jp/qa4701263.html 上記 URL の手順で xdoc2txt.ocx, zlib.dll の 2 つのファイルを システムに登録したら、下記のようなソースで指定フォルダ内にある 全対象ファイルのテキスト抽出が可能です。 そして、検索フォルダの指定には、BrowseForFolder で WEB 検索して もらえれば、フォルダ選択ダイアログのサンプルソースが見つかる でしょうから、それを利用します。 もし参考にされるようであれば、エラートラップは必要に応じ追加して 下さい。また、出力は仮に VBE のイミディエイトウインドウにして いますが、外部ファイルにするなり、ワークシートにするなり、適当に 修正してみて下さい。 Sub Sample() ' // 対象ファイル拡張子(カンマ区切りで小文字指定) Const LIST_EXTENTION As String = "pdf,xls,txt,doc" Dim sDirectory As String Dim sExtention As String Dim sText As String Dim fso As Object ' // FileSystemObject Dim f As Object ' // File Dim xdc As Object ' // xdoc2txt ' // 検索フォルダ sDirectory = "C:\Documents and Settings\hogehoge\デスクトップ" ' // xdoc2txt の準備 Set xdc = CreateObject("XDOC2TXT.xdoc2txtCtrl.1") ' // FileSystemObject の準備 Set fso = CreateObject("Scripting.FileSystemObject") For Each f In fso.GetFolder(sDirectory).Files ' // 拡張子で対象ファイルを簡易フィルタ sExtention = LCase$(fso.GetExtensionName(f.Name)) If InStr(LIST_EXTENTION, sExtention) Then ' // xdoc2txt を使ってテキスト抽出します sText = xdc.Convert(f.Path) ' // イミディエイトウインドウへ出力 Debug.Print String$(80, "-") Debug.Print "File:= " & f.Name Debug.Print String$(80, "-") Debug.Print sText End If Next Set xdc = Nothing Set fso = Nothing End Sub
お礼
ご回答ありがとうございます。 わざわざソースまで書いていただき、重ね重ね ありがとうございます。 残念ながら、今回は特定のPCで作業を行うわけではなく、 xdoc2txt及びPDF一式を持って回って、不特定のPCで 作業するため、ocxでの作業は難しいかと思われます。 今後、そういった機会があれば参考にさせていただきたいと思います。
お礼
ご回答ありがとうございます。 御礼が遅くなり申し訳ございません。 なるほど。そこをダブルコーテーションで区切るのですか。 さっそく試したところ無事動きました。