通常、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つです。
-
SetText
メソッドDataObject.SetText Method (System.Windows.Forms)Adds text data to the data object.テキストデータをデータオブジェクトに格納します。
-
PutInClipboard
メソッドセットされたデータをクリップボードにセットします。
参照設定にて、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
コメント