- 締切済み
C# Wordファイルから文章データを取得
いつもお世話になっております。 只今、Wordの中身をリッチテキストボックスに取得しようとしています。 取得したデータを他の形式に変更するので、中身を編集というのはしない予定です。 取り込むこと自体はできるようになりまして なんとかなるかなと思っていたのですが、動作を確認していると どうも大きなファイルだと上手くいかないのです。 十数ページなら何とかいけても、数十ページだとエラーが出ます。 そこで質問です。 1:考えられる原因にはどんなものがあるでしょうか クリップボードを利用してるので、そこが怪しいですが ほかにありましたらお願いします。 2:解決する方法にはどんなものがあるでしょうか? 3:この方法以外にWordのデータを取得する方法はあるでしょうか? (クリップボードを利用する以外の方法) ソースは以下のように記述しました。 --------------------------------- Type wt = Type.GetTypeFromProgID("Word.Application"); Object wApp = Activator.CreateInstance(wt); try { Object tmpDoc = wApp.GetType().InvokeMember("Documents", BindingFlags.GetProperty, null, wApp, null); object[] tmpFile = { fileName, false, true, false, Type.Missing, Type.Missing, true, Type.Missing, Type.Missing, Type.Missing, Type.Missing, false, true, Type.Missing, true, Type.Missing }; Object wDoc = tmpDoc.GetType().InvokeMember("Open", BindingFlags.InvokeMethod, null, tmpDoc, tmpFile); Object activeW = wDoc.GetType().InvokeMember("ActiveWindow", BindingFlags.GetProperty, null, wDoc, null); Object activeWSelection = activeW.GetType().InvokeMember("Selection", BindingFlags.GetProperty, null, activeW, null); activeWSelection.GetType().InvokeMember("WholeStory", BindingFlags.InvokeMethod, null, activeWSelection, null); activeWSelection.GetType().InvokeMember("Copy", BindingFlags.InvokeMethod, null, activeWSelection, null); //クリップボードの中身取得 IDataObject data = Clipboard.GetDataObject(); //リッチテキストボックス(rTextにデータを挿入) rText.Rtf = data.GetData(DataFormats.Rtf).ToString(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } finally { Object apApp = wApp.GetType().InvokeMember("Application", BindingFlags.GetProperty, null, wApp, null); apApp.GetType().InvokeMember("Quit", BindingFlags.InvokeMethod, null, apApp, new object[] { Type.Missing, Type.Missing, Type.Missing }); } --------------------------------- あちこち参考サイトを見て回っているのですが 捜し方が悪いのか、クリップボードを利用する方法以外が見つかりません。 わかる方がいましたら、よろしくお願いします。 開発環境:VisualStudio2008 実行環境:Vista Word:*.doc/*.docx
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- AlexSuns
- ベストアンサー率67% (78/115)
検証したわけではないのですが、下記の方法で読み込む場合はどうでしょう? DOBON.NET > プログラミング道 > .NET Tips > コントロール * 複数のRTFファイルを連結してRichTextBoxに表示する http://dobon.net/vb/dotnet/control/combinertffiles.html
お礼
お礼が遅くなってすみません。 回答ありがとうございます。 参考URL見させていただきました。 うーん、これは別ファイルを取り込んでいるように見えますが、違うのでしょうか・・・ 1つのファイル内にある、複数ページにわたるテキストを取り込みたいと考えているのですが・・・ もう少し調べてみます。 また何か方法がありましたらよろしくお願いします。