• ベストアンサー

リッチテキストボックスの中身をExcelにコピー

リッチテキストボックスを用いて 中身(テキスト)の単語を色々な表現(色、太字、サイズ)で表すことを行なっています。 この内容をExcelにコピーできるようにしたいのですが。 色などの情報を正しく引き継いでもらうためには どのようなコーディングをすればいいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#22222
noname#22222
回答No.2

ズブの素人ですので、見当違いであればお許し下さい。 <単純にテキストを読み込む場合> Public Function FileReadAll(ByVal FileName As String) As String On Error GoTo Err_FileReadAll    Dim fso As FileSystemObject    Dim fil As File    Dim txs As TextStream       Set fso = New FileSystemObject    Set fil = fso.GetFile(FileName)    Set txs = fil.OpenAsTextStream(ForReading, TristateUseDefault)    FileReadAll = txs.ReadAll Exit_FileReadAll:    Exit Function Err_FileReadAll:    MsgBox Err.Description & "(FileReadAll)", vbExclamation, " 関数エラーメッセージ"    Resume Exit_FileReadAll End Function Private Sub CommandButton1_Click()   Dim strText As String      strText = FileReadAll("d:\temp\Test.txt")   MsgBox strText End Sub これで、コマンドボタンをクリックすると Test.txt の内容をstrTextに代入してMsgBox で表示できます。 リッチテキストボックスのテキストを出力した後にエクセルのコマンドボタンをクリックし、エクセルにstrText を表示すれば、事実上のコピーが成立します。 もちろん、エクセルが開いていない場合に、自動オープンして自動コピーする。 あるいは、エクセルのコマンドボタンを送信側から操作するなど色々のケースがあるでしょう。 まあ、直接にコピーするよりも簡単という訳です。 <複雑な情報の転送> ・元々の情報とエクセルの対応を決める。 ・それぞれの情報の再現方法を決める。 ・これらを構造体変数に代入する。 ・構造体変数を一旦ファイルとして出力する。 ・エクセルで構造体変数を呼び込む。 ・構造体変数をエクセルに反映する。 コピー情報が単純ではないと判断し<構造体変数化>という手法を提示したものです。 どのような構造体変数を用意すべきかは、質問の範囲では不明です。 例えば、次のような構造体変数の出力とリードには BLoad()、BSave()という関数を使っています。 Private Type MENU   TitleCaption   As String * 24 ' トップメニュータイトル   MenuCount     As Integer   ' メニュー総数   SubItems(5)    As Integer   ' 各メニューの項目数   MenuNames(5)   As String * 16 ' 主メニュー名                    ' ----+----1----+----2----   LargeIcons(5, 19) As String * 24 ' Icons\Large\xxxxxxxx.ico   SmallIcons(5, 19) As String * 24 ' Icons\Small\xxxxxxxx.ico   IconTexts(5, 19) As String * 12 ' アイコンテキスト   AppTypes(5, 19)  As String * 1  ' アプリケーションの種類   AppNames(5, 19)  As String * 20 ' アプリケーション名   AppDescs(5, 19)  As String * 32 ' アプリケーションの説明   ViewMode     As Integer   ' 表示モード End Type Dim MyMenu As MENU ' -------------------------------------------------------------------------------- ' 構造体変数 MyMenu を Menu.ini に保存 ' -------------------------------------------------------------------------------- Private Function BSave(ByVal FileName As String, ByRef MyMenu As MENU) As Boolean On Error GoTo Err_BSave   Dim isOK    As Boolean   Dim intFreeFile As Integer      isOK = True   intFreeFile = FreeFile   Open FileName For Random As intFreeFile Len = Len(MyMenu)   Put #intFreeFile, 1, MyMenu Exit_BSave: On Error Resume Next   Close #intFreeFile   BSave = isOK   Exit Function Err_BSave:   isOK = False   Resume Exit_BSave End Function ' -------------------------------------------------------------------------------- ' ランダムファイル Menu.ini を構造体変数 MyMenu にロード ' -------------------------------------------------------------------------------- Private Function BLoad(ByVal FileName As String, ByRef MyMenu As MENU) As Boolean On Error GoTo Err_BLoad   Dim isOK    As Boolean   Dim intFreeFile As Integer      isOK = FileExists(FileName)   If isOK Then     intFreeFile = FreeFile     Open FileName For Random As intFreeFile Len = Len(MyMenu)     Get #intFreeFile, 1, MyMenu   End If Exit_BLoad: On Error Resume Next   Close #intFreeFile   BLoad = isOK   Exit Function Err_BLoad:   isOK = False   Resume Exit_BLoad End Function 参考になれば幸いです。

hiromu0103
質問者

お礼

ありがとうございます。 こんなにも具体的に教えていただけるとは思っておらず、ビックリしました。 教えていただいたものを参考にあれこれと試してみます。 本当にありがとうございました。

その他の回答 (1)

noname#22222
noname#22222
回答No.1

ほぼ同様のことを私は次の要領で行っています。 (1)必要なプロパティ情報を構造体変数に代入しランダムファイルに記録。 (2)Excelでは、同じ構造体変数に呼び込み必要なプロパティを設定する。 以上です。

hiromu0103
質問者

補足

ごめんなさい。具体的にどういう風にしたらいいのか教えていただけませんか?

関連するQ&A