- ベストアンサー
リッチテキストボックスの中身をExcelにコピー
リッチテキストボックスを用いて 中身(テキスト)の単語を色々な表現(色、太字、サイズ)で表すことを行なっています。 この内容をExcelにコピーできるようにしたいのですが。 色などの情報を正しく引き継いでもらうためには どのようなコーディングをすればいいのでしょうか?
- みんなの回答 (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 参考になれば幸いです。
その他の回答 (1)
ほぼ同様のことを私は次の要領で行っています。 (1)必要なプロパティ情報を構造体変数に代入しランダムファイルに記録。 (2)Excelでは、同じ構造体変数に呼び込み必要なプロパティを設定する。 以上です。
補足
ごめんなさい。具体的にどういう風にしたらいいのか教えていただけませんか?
お礼
ありがとうございます。 こんなにも具体的に教えていただけるとは思っておらず、ビックリしました。 教えていただいたものを参考にあれこれと試してみます。 本当にありがとうございました。