- 題名: リッチテキストボックス内のテキストをワード形式で保存
- 日時: 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を削除しなければならないわけなのですが、
処理時間がかなりかかります。
なんとか、効率よくやらせたいのですが、
お知恵を貸していただけないでしょうか?
よろしくお願いします。