- 題名: リッチテキストボックス内のテキストをワード形式で保存
- 日時: 2005/04/11 21:46:11
- ID: 10359
- この記事の返信元:
- (なし)
- この記事への返信:
- [10537] Re[1]: リッチテキストボックス内のテキストをワード形式で保存2005/04/19 19:09:16
- ツリーを表示
> リッチテキストボックスをRTF形式で保存した後、 > わざわざワードを起動してRTF形式で読み出し、 > そしてワード形式で保存するという非常に面倒な作業をやらせてます。 Word の形式で保存しようとしているのですから、起動するのは仕方ないのではないでしょうか? > その他RTFを削除しなければならないわけなのですが、 > 処理時間がかなりかかります。 「RTFを削除」というのが何を指しているのかも、どこがボトルネックになっているのかも判りませんが、 一旦リッチテキスト ファイルに保存するという手順を省けば(どの程度改善されるかはさておき) それだけ早くなるのではないかと思います。 例えば次のようにクリップボードを利用するいうのはどうでしょう。 # C# ですけど、内容は伝わりますよね? object nothing = Type.Missing; object documentType = Word.WdNewDocumentType.wdNewBlankDocument; object visible = false; object fileName = System.IO.Path.Combine(Application.StartupPath, "Text.doc"); Word.Application app = new Word.Application(); Word.Documents docs = app.Documents; Word.Document doc = docs.Add(ref nothing, ref nothing, ref documentType, ref visible); doc.Select(); Word.Selection sel = app.Selection; int ss = this.richTextBox1.SelectionStart; int sl = this.richTextBox1.SelectionLength; this.richTextBox1.SelectAll(); this.richTextBox1.Copy(); this.richTextBox1.SelectionStart = ss; this.richTextBox1.SelectionLength = sl; sel.Paste(); doc.SaveAs(ref fileName, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing); Marshal.ReleaseComObject(sel); sel = null; doc.Close(ref nothing, ref nothing, ref nothing); Marshal.ReleaseComObject(doc); doc = null; Marshal.ReleaseComObject(docs); docs = null; app.Quit(ref nothing, ref nothing, ref nothing); Marshal.ReleaseComObject(app); app = null;
分類:[.NET]
お世話になります。VB.NETでエディタを作成しています。
Titleどおり、
リッチテキストボックス内のテキストをワード形式で保存したいのですが、
どうすれば効率よくできるのでしょうか?
実は、恥ずかしながら、
リッチテキストボックスをRTF形式で保存した後、
わざわざワードを起動してRTF形式で読み出し、
そしてワード形式で保存するという非常に面倒な作業をやらせてます。
こんな感じで、、。dcDocフォームに設定してあります。
'リッチテキストボックスのテキストをリッチテキスト形式で保存
dcDoc.RichTextBox1.SaveFile(dcFilename & ".rtf",_ RichTextBoxStreamType.RichText)
dcDoc = Nothing
Dim wdApp As Microsoft.Office.Interop.Word.Application
Dim wdDoc As Microsoft.Office.Interop.Word.Document
wdApp = New Microsoft.Office.Interop.Word.Application()
wdDoc = wdApp.Documents.Open(CType(dcFilename & ".rtf", Object))
wdDoc.SaveAs(CType(dcFilename, Object))
wdDoc = Nothing
wdApp = Nothing
上記コードはかなり適当で、
その他RTFを削除しなければならないわけなのですが、
処理時間がかなりかかります。
なんとか、効率よくやらせたいのですが、
お知恵を貸していただけないでしょうか?
よろしくお願いします。