リッチテキストボックス←→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