クリップボードとのインターフェース
エクセルの中で .Copyで内部的なクリップボードに入れて、.PasteSpecialするのは簡単です。では、エクセルではなく別アプリで使えるようにクリップボードに入れるにはどうしたらいいでしょうか。セルの内容を.Copyすれば別アプリでもアクセスできるので問題解決ですか? では、文字列変数の中身をクリップボードにコピーしたい場合、一旦どこかのセルに文字列をセットしないと.Copyできないですよね? その逆も同じです。セルに.PasteSpecialしないとデータにアクセスできないのでは不便です。
エクセルのVBAにはクリップボードを扱うオブジェクトがないので、”Microsoft Forms 2.0 Object Library”というライブラリをツールメニュー▶▶参照設定する必要があります。F2でオブジェクトブラウザを表示させて、DataObjectを検索してみてください。Clear、GetFormat、GetFromClipboard、GetText、PutInClipboard、SetText、StartDragといったメンバーがあることが分かると思います。
以下のコードはクリップボードへのデータセットとコピーのサンプルです。
使用例:
Dim buff As String buff = GetHTMLText("www.yahoo.co.jp") CB_SetText buff Public Sub CB_SetText(pBuffer As String) Dim oClip As DataObject Set oClip = New DataObject oClip.clear oClip.SetText pBuffer oClip.PutInClipboard End Sub Public Function CB_GetText() As String Dim oClip As DataObject Set oClip = New DataObject oClip.GetFromClipboard CB_GetText = oClip.GetText() End Function