リッチテキストボックス←→Word 間でのやり取り |
リッチテキストボックス←→Word 間でクリップボード経由でのテキストのやり取り (411) | |
使用するコントロールは RichTextBox1 と Command1 と Command2 と Command3 と Text1 プロジェクト→参照設定でMicrosoft Word *.* Object Library にチェックを入れておいて下さい。 テスト環境 WindowsXP(Home SP2) VB6.0(SP6) |
|
|
Option Explicit Private Sub Command4_Click() On Error Resume Next '------------------------------------------------------ 'リッチテキストファイルを選択してクリップボードにコピー Clipboard.Clear 'クリップボードをクリア With RichTextBox1 .SetFocus .SelStart = 0 .SelLength = Len(.Text) End With 'Ctrlキー+Cキーを送ります(コピー) SendKeys "^C" '------------------------------------------------------- '新規ファイルでWordを起動 Dim wdApp As Word.Application Dim wdDoc As Word.Document Set wdApp = New Word.Application Set wdDoc = wdApp.Documents.Add '既存のファイルを起動する場合 'Set wdDoc = wdApp.Documents.Open("c:\test.doc") DoEvents '起動されるまで待つ '------------------------------------------------------- 'クリップボードのファイルをWord上にペースト wdApp.Selection.Paste '------------------------------------------------------- 'ペーストしたテキストに段落(行間の間隔)を設定 '全て選択 wdApp.Selection.WholeStory '段落を設定(行間の間隔) wdApp.Selection.ParagraphFormat.LineSpacingRule = wdLineSpaceExactly '指定した段落の行間をポイント単位で設定 wdApp.Selection.ParagraphFormat.LineSpacing = CLng(Text1.Text) '------------------------------------------------------- '設定したテキストをクリップボードにコピー wdApp.Selection.Copy '------------------------------------------------------- 'クリップボードからリッチテキスト形式で取得 'クリップボードから取得してリッチテキストボックスに表示 RichTextBox1.TextRTF = Clipboard.GetText(vbCFRTF) '--------------------------------------------------------- 'Word の終了処理 '保存しないで終了 wdApp.Quit SaveChanges:=wdDoNotSaveChanges Set wdDoc = Nothing Set wdApp = Nothing End Sub Private Sub Command1_Click() RichTextBox1.LoadFile "c:\test.rtf", rtfRTF End Sub Private Sub Command2_Click() RichTextBox1.SaveFile "c:\test02.rtf", rtfRTF End Sub |
クリップボードを経由してリッチテキスト形式のテキストをWord と リッチテキストボックス間でやり取りするサンプルです。 Excel からですと1文字づつのカラー情報が失われる等の不具合がありますが、Word からですと問題がありません。 Excel → Word → リッチテキストボックス へといった使い方もできます。 単なるコピー・アンド・ペーストでは面白くないので、リッチテキストボックスのテキストをWord 上にペーストして Word 上で段落設定(行間間隔設定)をした後、リッチテキストボックスにペースト(返す)しております。 この方法で行の高さを設定しても結構早いです。 初心者の方でも試して頂けるようにAPIを使用しないコードで実現しております。 別途、API関数を使ったサンプル(No.410)もあります。 |
2005/3/31