掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
MS-WORDの文書ファイルを読込んでテキスト表示するには? (ID:15528)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
はじめまして、こんにちは。 Delphi 7 Professional で、Word 2000形式のファイルの テキストを取り出すプログラムを作りたいです。 過去ログ Mr.XRAY [HomePage] 2005/03/13(日) 14:10:25 http://homepage3.nifty.com/m-and-i/tips/readworddoc.htm を参考に、コードを頂いて加工したのですが、実行しても何も起きませんでした。 あと、この方法以外では、 次の方法でワードを開く所まではいきましたが、 文字の取得(Ctrl+A ,Ctrl+Cでも構いません)を行うコードがわかりませんでした。 // uses に ComObj 必要。 OpenFileName:='C:\文書.doc'; Word:=CreateOLEObject('Word.Application'); Word.Visible:=True; Word.Documents.Open(OpenFileName); また、Mr.XRAYさんのコンポをさわってみましたが、 テキスト取りだし方法はわかりませんでした。 色々な方法があるかと思いますが、どんな方法でも構いません。 コーディングの大きな流れ的ヒントでも構いません。 ○○を使うのが一番楽だよ、的ヒントでも構いません。 アドバイス、よろしくお願いいたします。 ———————————————————————————————————— procedure TForm1.Button1Click(Sender: TObject); var FileName : String; F: File; WdSrc: array[0..256] of WideChar; WdHed: array[0..512] of WideChar; Header: array[0..$300] of Byte; RtfHeader: array[0..6] of char; Txt, Line: string; i, rp: integer; TxtLen: LongInt; begin FileName:='C:\文書.doc'; AssignFile(F, filename); Reset(F, 1); BlockRead(F, RtfHeader, 6); RichEdit1.Lines.BeginUpdate; RichEdit1.Lines.Clear; //--------------------- RichEdit1.PlainText := True; Seek(F, $200); BlockRead(F, RtfHeader, 6); Seek(F, $200); BlockRead(F, Header, $300); Seek(F, $200); try BlockRead(F, WdHed, SizeOf(WdHed)); except ; end; //--------------------- // WORD8以降なので、これ TxtLen := Header[$4C] + (Header[$4D] shl 8) + (Header[$4E] shl 16) + (Header[$4F] shl 24); try TxtLen := TxtLen * 2; except ; end; Seek(F, $600); Txt := ''; for i := 0 to TxtLen div 512 do begin try BlockRead(F, WdSrc, SizeOf(WdSrc)); except Break; end; // VER8以降の文書はテキストがUNICODEで格納されているので、これを // SHIFT-JISに戻す Txt := Txt + WideCharToString(WdSrc); rp := Pos(#$0D, Txt); while rp > 0 do begin Line := Copy(Txt, 1, rp - 1); try RichEdit1.Lines.Add(Line); except MessageDlg('全てを読込めませんでした.', mtWarning, [mbOK], 0); RichEdit1.Lines.EndUpdate; CloseFile(F); Exit; end; Delete(Txt, 1, rp); rp := Pos(#$0D, Txt); end; end; try BlockRead(F, WdSrc, TxtLen mod 512); // VER8以降の文書はテキストがUNICODEで格納されているので、これを // SHIFT-JISに戻す Txt := WideCharToString(WdSrc); rp := Pos(#$0D, Txt); while rp > 0 do begin Line := Copy(Txt, 1, rp - 1); try RichEdit1.Lines.Add(Line); except MessageDlg('全てを読込めませんでした.', mtWarning, [mbOK], 0); RichEdit1.Lines.EndUpdate; CloseFile(F); Exit; end; Delete(Txt, 1, rp); rp := Pos(#$0D, Txt); end; except ; end; end; ———————————————————————————————————— コード見ていただいてありがとうございました。 正直なところ、元コードから必要と思われる部分だけどコピーしたものです。 行っている内容については、ほとんどの部分が理解できていません。 なのに質問してしまって、すみません。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.