VBAでクリップボードにコピーする

参照設定の追加

クリップボードのデータはパワポで用意されているオブジェクトでは扱うことができない。(たぶん)
DataObjectというオブジェクトで扱うことができる。
このオブジェクトは、ライブラリ「Microsoft Forms 2.0 Object Library」にある。このライブラリは参照設定が必要で、以下のように設定を行う。

VBAを開く
メニューバーのツール > 参照設定 を開く
参照ボタンをクリック
ファイル「C:\Windows\System32\FM20.DLL」を開く。
OKボタンを押す。


Data Object

https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/dataobject-object

公式では多数あるが、オブジェクトブラウザでは以下のメソッドがある。
Clear
GetFormat
GetFromClipboard
GetText
PutInClipboard
SetText
StartDrag

Clear

あるオブジェクトやコレクションがもつすべてのオブジェクトを削除する。

object.Clear


GetFormat

DataObjectにある形式かどうかを示す整数値を返却する。

Boolean = object.GetFormat(format)

format

整数型か文字列型。
指定された型がDataObjectにある場合はTrueを返却する。

GetFromClipboard

クリップボードからデータをコピーする。

String = object.GetFromClipboard()

DataObjectはテキストと書式といった複数の項目を含めることができる。
ただし、テキストとテキストなど同じ項目を含めることはできない。

GetText

指定した形式でテキスト文字を取得する。

String = object.GetText([format])

format (optional)
データの形式を指定する文字列型or整数型。
指定しない場合、テキスト形式になる。


PutInClipboard

DataObjectからクリップボードにデータを移動する。

object.PutInClipboard


使用例
https://learn.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/paste-putinclipboard-settext-methods-example
TextBox1コントロール、TextBox2コントロール、CommandButtonコントロールを用意。
TextBox1の方にValueを設定しておく。
CommandBoxをダブルクリックし、CommandBottonのコード書込み部分に以下をきさいする。

Dim MyData As DataObject 
 
Private Sub CommandButton1_Click() 
 Set MyData = New DataObject 
 
 MyData.SetText TextBox1.Text 
 MyData.PutInClipboard 
 
 TextBox2.Paste 
End Sub 


スライドショーを開始し、CommandButtonをクリックすると、TextBox1の文字がTextBox2にコピーされる。クリップボードにも同文字列がコピーされているはず。

SetText

指定した形式でDataObjectに文字列をコピーする。

object.SetText(StoreData[, format])

StoreData

DataObjectに格納するデータを定義する。

format (option)

StoreDataの形式を示す整数型or文字列型。
DataObjectからデータを取得するデータ型がこれによって識別される。
1: テキスト形式
それ以外:ユーザ定義
デフォルトはテキスト形式。

DataObjectに引数と同じ形式のデータが格納されている場合は上書き。
別の形式のデータが格納されている場合は、既存のデータは維持されたまま新しいデータも保持される。

StartDrag

ドラッグアンドドロップ操作を行う。

fmDropEffect = Object. StartDrag([effect as fmDropEffect])

effect

fmDropEffectNone (= 0)
選択済みテキスト・オブジェクトをコピーも移動もしない
fmDropEffectCopy (= 1)
選択済みテキスト・オブジェクトをコピーする 。
fmDropEffectMovey (= 2)
選択済みテキスト・オブジェクトを移動する 。
fmDropEffectCopyOrMove (= 3)
ドロップ ソースをドロップ ターゲットにコピーまたは移動します。

ドラッグ操作は、現在のマウス ポインター位置で現在のキーボードの状態を使用して開始され、ユーザーがマウスを離すと終了します。 ドラッグ アンド ドロップ操作の効果は、ドロップ ターゲットに対して選択された効果によって異なります。
たとえば、コントロールの MouseMove イベントに StartDrag メソッドを含めることができます。 ユーザーがコントロールをクリックしてマウスを移動すると、マウス ポインターが変化し、ドロップ ターゲットに対して Effect が有効かどうかが示されます。