ExcelVBA+xdoc2txtでデスクトップのファイルをコンバートする方法

このQ&Aのポイント
  • ExcelVBAとxdoc2txtを使用して、デスクトップのファイルをPDFからtxtに変換する方法について説明します。
  • xdoc2txt.exeとpdfファイルがデスクトップに存在する場合に問題が発生する可能性があります。
  • ファイル名にスペースが含まれる場合、ダブルコーテーションで囲む必要があるかもしれませんが、それでも動作しない場合があります。
回答を見る
  • ベストアンサー

ExcelVBA+xdoc2txtでデスクトップのファイルをコンバートしたい。

ExcelVBA+xdoc2txtを使い、以下の手順でPDFをtxtに変換します。 ・xdoc2txt.exeがいるフォルダを指定させる。 ・PDFがいるフォルダを指定させる。 ・以上を組み合わせxdoc2txt.exeを起動する。 この手順ですが、xdoc2txt.exe及びpdfがDドライブ直下などに 存在する場合は実現出来ています。 問題は両者がデスクトップに存在する場合です。 おそらくデスクトップのフルパスがスペースを含んでいるので 上手く行かないではないかと想像しています。 xdoc2txtのヘルプには「※空白を含むファイル名の場合、""で囲ってください」とあるので、例えば、 "C:\Documents and Settings\hogehoge\デスクトップ\xdoc2txt\xdoc2txt.exe -f C:\Documents and Settings\hogehoge\デスクトップ\PDF\xxx.pdf" あるいは C:\Documents and Settings\hogehoge\デスクトップ\xdoc2txt\xdoc2txt.exe -f "C:\Documents and Settings\hogehoge\デスクトップ\PDF\xxx.pdf" という風にダブルコーテーションで囲ってみたのですが、上手く動作しません。 その実現方法についてご教示いただけると幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

こんにちは。 "C:\Documents and Settings\hogehoge\デスクトップ\xdoc2txt\xdoc2txt.exe" -f "C:\Documents and Settings\hogehoge\デスクトップ\PDF\xxx.pdf" EXE のパスと変換対象のファイルのパスともにダブルクォーテーション(WQ) で括ります。   "EXEのパス" -f "変換対象ファイルのパス" コマンドラインは 半角 SP がパラメータ区切りとして認識されてしまいます ので、半角 SP が含まれるパスは全て WQ で括る必要があります。

mogmogtae
質問者

お礼

ご回答ありがとうございます。 御礼が遅くなり申し訳ございません。 なるほど。そこをダブルコーテーションで区切るのですか。 さっそく試したところ無事動きました。

その他の回答 (1)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

投稿後、ふと思ったのですが。。 > 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

mogmogtae
質問者

お礼

ご回答ありがとうございます。 わざわざソースまで書いていただき、重ね重ね ありがとうございます。 残念ながら、今回は特定のPCで作業を行うわけではなく、 xdoc2txt及びPDF一式を持って回って、不特定のPCで 作業するため、ocxでの作業は難しいかと思われます。 今後、そういった機会があれば参考にさせていただきたいと思います。

関連するQ&A

  • 【バッチファイル】コマンド上で書いた文字をテキストに表示

    コマンド上で入力した文字を、元々あるテキスト(メモ帳)に 書き出したいのですが、どなたかご存知の方、ご教授願いますm(_ _)m 例)、 ping 192.168.*.***>"C:\Documents and Settings\=====\デスクトップ\%COMPUTERNAME%.txt" ipconfig /all>>"C:\Documents and Settings\=====\デスクトップ\%COMPUTERNAME%.txt" "C:\Documents and Settings\=====\デスクトップ\%COMPUTERNAME%.txt">notepad.exe ↑で作成したテキストに、サービスタグ(仮に、XTZ1234とします)を追記したい ということです。 よろしくお願いいたします。

  • delコマンドでデスクトップ上のファイルを消去

    del コマンドで、デスクトップ上のファイルを絶対パス指定で消去したいのですが、できません。 例: del C:\Documents and Settings\user\デスクトップ\samplefile.txt    “デスクトップ上のファイルsamplefile.txtを消去” 上記を打つと“指定されたパスが見つかりません。”と返答があり消去できません。 何かお気付きの点がありましたら教えてください。

  • デスクトップ上の全ファイル取得

    開発環境 WindowsXP,SP2 Visual Studio 2005 VC++ SDK SHGetFolderPath()でデスクトップのパスを取得した後、FindFirstFileによってデスクトップ上の全ファイル及びディレクトリの名前を取得したいと考えております。 SHGetFolderPathで取得したパスは、 C:\Documents and Settings\...\デスクトップ となっており、この文字列をwsprintfで次のように加工しました。 wsprintf(output,"%s\\*.*","C:\Documents and Settings\...\デスクトップ"); このoutputをFindFirstFile,FindNextFile,FindCloseを組み合わせたプログラムでディレクトリ内の全てのファイル及びディレクトリの名前を取得しています。 このプログラムは普通(?)のディレクトリでは有効で、こちらの期待通りの動きをしてくれるのですが、取得したデスクトップのパスを渡すと、デスクトップフォルダ内にはデスクトップという名前のフォルダしかないと出力されます。以下のような感じです。 調査ディレクトリ:C:\Documents and Settings\...\デスクトップ 調査結果 "C:\Documents and Settings\...\デスクトップ"ディレクトリ内のファイル及びディレクトリ:デスクトップ これはWindowsの仕様の動作なのでしょうか。 特殊フォルダであるデスクトップは、FindFirstFileでは調査出来ないのでしょうか? 他に方法はありますか? どうか教えてください。

  • %USERPROFILE%などのフォルダがデスクトップに。

    %USERPROFILE%ーと%USERPROFILE%という隠しフォルダ二つと、%SystemDrive%というフォルダが知らぬ間にデスクトップへ置かれていました。 それぞれ上層、下層フォルダは以下のようになっています。 C:\Documents and Settings\ユーザー名\デスクトップ\%USERPROFILE%ー\Local Settings\Application Data\Microsoft C:\Documents and Settings\ユーザー名\デスクトップ\%USERPROFILE%\Local Settings\History\History.IE5 C:\Documents and Settings\ユーザー名\デスクトップ\%SystemDrive%\Documents and Settings\ユーザー名\Application Data\Microsoft\SystemCertificates これら三つのフォルダはデスクトップから削除しても他のプログラムなどに影響はないでしょうか? 影響のある場合、デスクトップから削除若しくは移動したい場合はどのようにすればよいのでしょうか?

  • コマンドプロンプト copyができません

    こんにちわ。 コマンドプロンプトのcopyコマンドについて質問させていただきます。 下記(1)~(4)処理内容のバッチファイルを作成しました。 デスクトップにある転送データ.txtを(2)、(3)、(4)の各workフォルダへコピーする処理です. (2)、(3)には正常にコピーされますが、なぜか(4)だけコピーされません。 (1)cd C:\Documents and Settings\XXX\デスクトップ (2)copy 転送データ.txt D:\work (3)copy 転送データ.txt C:\work (4)copy 転送データ.txt C:\Documents and Settings\XXX\デスクトップ\work どなたかご教授いただけますでしょうか? 環境 WindowsXP SP3

  • フォルダ&ファイルをこのように効率的にコピーや削除するbatファイルは?

    Windows2000の環境です。 192.168.0.1(ファイルサーバ) | |─192.168.0.2 | 192.168.0.3 という環境です。 192.168.0.2や192.168.0.3のファイル&フォルダ環境を出来るだけ統一したく思っています(192.168.0.2と192.168.0.3を同時に使用することはありません)。 ログオフ時に \\192.168.0.2(3)\Documents and Settings\root\デスクトップ\ 下の子フォルダ&孫フォルダ&ファイルを \\192.168.0.1\Documents and Settings\root\デスクトップ\ に移して ログイン時には逆に \\192.168.0.1\Documents and Settings\root\デスクトップ\ 下の子フォルダ&孫フォルダ&ファイルを \\192.168.0.2(3)\Documents and Settings\root\デスクトップ\ に移したいのですが 単にログオフ時に \\192.168.0.1\Documents and Settings\root\デスクトップ\ の子フォルダ&孫フォルダ&ファイルを全削除して \\192.168.0.2(3)\Documents and Settings\root\デスクトップ\ の子フォルダ&孫フォルダ&ファイルを全コピーするとフォルダサイズとかが大きい場合にはログイン完了やログオフ完了までかなりの時間がかかってします。 それでタイムスタンプが同じファイルは無視して \\192.168.0.2(3)\Documents and Settings\root\デスクトップ\ 下にあってタイムスタンプが新しいものは \\192.168.0.1\Documents and Settings\root\デスクトップ\ 下にコピー そして \\192.168.0.2(3)\Documents and Settings\root\デスクトップ\ 下に存在してなくて \\192.168.0.1\Documents and Settings\root\デスクトップ\ にあるものは削除するようにする。 ログイン時には同様の逆の手順で行えば単時間で \\192.168.0.2\Documents and Settings\root\デスクトップ\ と \\192.168.0.3\Documents and Settings\root\デスクトップ\ ともコピー&削除作業時間を浪費せずに同じフォルダ&ファイル環境を築けると考えます。 このようにするにはbatファイルをどのように記述すれば宜しいでしょうか?

  • エクスプローラを、初期表示をデスクトップにして起動するには

    エクスプローラを起動するとき、初期表示するディレクトリを引数に指定できると思いますが、デスクトップを指定することは出来ないのでしょうか? 『C:\Documents and Settings\userid\デスクトップ』ではなく、フォルダ表示の最上位階層にある『デスクトップ』の方を指定したいのです。 よろしくおねがいします。

  • ExcelVBAでデスクトップのPATHを取得するには

    こんにちわ。ExcelVBAで、ワークシートのA列に入力されているデータをTextファイルに保存するプログラムを作りました。下記のものです。 ================================= Sub Expo_TXT() Dim Rows As Long Dim StrData As String Dim Fs As Object, A As Object Set Fs = CreateObject("Scripting.FileSystemObject") Set A = Fs.CreateTextFile("c:\test.txt", True) For Rows = 1 To 10 StrData = Worksheets("Sheet1").Cells(Rows, 1).Value A.WriteLine StrData Next Rows A.Close End Sub ================================= しかし見てのとおりcドライブのルートにtest.txtという名前で保存するようになっています。 できれば、そのパソコンのデスクトップに保存したいのですが、どうすれば、パソコンのデスクトップのPATHを取得できるでしょうか? それぞれのパソコンのデスクトップは c:\windows\デスクトップという様にWin98マシンもあれば c:\Documents and Settings\Hanako\デスクトップや c:\Documents and Settings\Taro\デスクトップという場合もあります。多分APIとか使うんだろうなと思い、Webの解説ページを読んだりしましたがAPI使ったことが無いのでチンプンカンプンでした。 できれば具体的なコーディング例をご提示いただければ助かります。

  • デスクトップに表示される画面の場所(パス)は?

    Windows XPのHOME何とかのマシンのことですが、 今までは、画面に表示されるアイコン等は C:\Documents and Settings\(ユーザー名)\デスクトップのフォルダにあるものが表示されていました。 しかし急にC:\Documents and Settings\(ユーザー名)\Desktopのフォルダの内容が表示されるようになってしまいました。そもそも何故、デスクトップフォルダとDesktopフォルダがあるのでしょうか? Desktopフォルダは使われていないようなので、実際に表示されるのは C:\Documents and Settings\All Users\デスクトップのフォルダしか表示されていません。 でも、(ユーザー名)\デスクトップのフォルダの内容は消えていないので、わざわざエクスプローラーを開かなければなりません。 例えば、デスクトップに保存してもデスクトップのフォルダに保存されるから、画面には出て来ません。元のように画面にデスクトップのフォルダの内容が表示されるようにするにはどうすればいいでしょうか? よろしくお願いいたします。

  • バッチファイルでCOPYができない。

    バッチファイルを作成するのが初めてでしてうまくいきません。 copy /Y "C:\Documents and Settings\(ユーザー名)\test.txt" sample\ というコードを実行してみたんですが、 C:\Documents and Settings\(ユーザー名)>copy /Y "C:\Documents and Settings\(ユーザー名)\test.txt" sample\ だとできて、 C:\Documents and Settings>copy /Y "C:\Documents and Settings\(ユーザー名)\test.txt" sample\ だとできません。 (実行する場所によって違うということです) どこで実行してもできるようにしたいのですがどうすればよろしいですか?

専門家に質問してみよう