VBAで自動化

【VBA】クリップボードをクリアにする方法(DataObject)

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

-VBAで自動化