プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (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

参考になれば幸いです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/01/15 12:12

ほぼ同様のことを私は次の要領で行っています。


(1)必要なプロパティ情報を構造体変数に代入しランダムファイルに記録。
(2)Excelでは、同じ構造体変数に呼び込み必要なプロパティを設定する。
以上です。

この回答への補足

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

補足日時:2006/01/10 15:43
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!