ExcelVBA 値をクリップボードにセットする

通常、Excelを操作している中では、Ctrl+Cでクリップボードに値をセットしていると思います。

この記事では、ExcelVBAを用いて、クリップボードに値をセットする処理をプログラミングしてみたいと思います。

0. この記事のまとめ

クリップボードに値をセットするには、MSForms.DataObjectを使用します。

参照設定にて、Microsoft Forms 2.0 Object Libraryを参照可能にする必要があります。

そのうえで、以下のコードを使用して、クリップボードに値をセットします。

以下のコードでは、https://usefuledge.comという文字列をクリップボードにセットします。

Dim DataObj As New MSForms.DataObject

DataObj.SetText ("https://usefuledge.com")
DataObj.PutInClipboard

Set DataObj = Nothing

1. MSForms.DataObject

MSForms.DataObjectクラスは、System.Windows.Forms名前空間で定義されているクラスです。

DataObject Class (System.Windows.Forms)
Implements a basic data transfer mechanism.

このクラスの中には、GetAudioStreamなど様々なメソッドがありますが、この中で使用するものは、以下の2つです。

参照設定にて、Microsoft Forms 2.0 Object Libraryを参照可能にする必要があります。

2. 固定文字をクリップボードにセットする

冒頭で説明したものと同じコードですが、https://usefuledge.comという文字列をクリップボードにセットします。

Dim DataObj As New MSForms.DataObject

DataObj.SetText ("https://usefuledge.com")
DataObj.PutInClipboard

Set DataObj = Nothing

3. アクティブワークブックのファイルパスをクリップボードにセットする

以下のコードでは、アクティブワークブックのフォルダパスとファイル名を結合してファイルパスとして、クリップボードにセットします。

Dim DataObj As New MSForms.DataObject
Dim filepath As Variant
Dim Filename As Variant

filepath = ActiveWorkbook.Path
Filename = ActiveWorkbook.Name
DataObj.SetText (filepath & "\" & Filename)
DataObj.PutInClipboard

Set DataObj = Nothing

コメント

タイトルとURLをコピーしました