Excel VBA でクリップボードを活用する方法の一つにDataObjectを利用する方法があります。ここではDataObjectオブジェクトを活用する際にクリップボードをクリアにする方法を解説します。
VBAエディタの「ツール」メニューから「参照設定」を選択して「Microsoft Forms 2.0 Object Library」にチェックを入れることで、DataObjectを利用できるように設定します。
クリップボードをクリアにするコード
以下のコードでクリップボードを空にできます。
4行目の「DataObj.SetText Text:=""」はDataObjに空をセットします。
5行目の「DataObj.PutInClipboard」は空の内容をクリップボードにセットします。
Sub ClearClipboard()
Dim DataObj As Object
Set DataObj = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
DataObj.SetText Text:=""
DataObj.PutInClipboard
Set DataObj = Nothing
End Sub
以上のようにクリップボードをクリアにするというよりは空の状態をクリップボードにセットするイメージになります。
DataObjectオブジェクトとは
DataObjectは「Microsoft Forms 2.0 Object Library」 に含まれるオブジェクトの一部として提供されています。
クリップボードへのデータの読み取りや書き込みをサポートしており、VBA でクリップボードを操作するための主要なツールの一つです。
主なメソッドとプロパティ
- SetText : クリップボードのテキストデータを設定します。
- GetText : クリップボードからテキストデータを取得します。
- PutInClipboard :DataObjectに設定されているデータをクリップボードにコピーします。
- GetFromClipboard : 現在のクリップボードの内容をDataObjectに取得します。
- Clear :DataObjectの内容をクリアします(ただし、クリップボード自体をクリアするわけではありません)。
基本的に使用方法
Dim DataObj As Object
Set DataObj = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
' クリップボードにテキストを設定
DataObj.SetText "Hello, World!"
DataObj.PutInClipboard
' クリップボードからテキストを取得
DataObj.GetFromClipboard
MsgBox DataObj.GetTextDim DataObj As Object
Set DataObj = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
' クリップボードにテキストを設定
DataObj.SetText "Hello, World!"
DataObj.PutInClipboard
' クリップボードからテキストを取得
DataObj.GetFromClipboard
MsgBox DataObj.GetText