【VBA】クリップボードを利用する

VBAをでクリップボードの値を読み込んだり、書き込んだりするにはDataObjectを使用します。
参照するライブラリ
DataObjectを利用するにはMicrosoft Forms 2.0 Object libraryに参照設定を行う必要があります。
参照設定の設定方法についてはこちらをご覧ください。
https://kazusa-pg.com/vba-references/
参照設定にMicrosoft Forms 2.0 Object libraryがない場合はこちらをご覧ください。
https://kazusa-pg.com/vba-reference-read-dll/
コード
クリップボードに値を設定するプロシージャ
クリップボードに値を設定するコードは以下になります。
1Option Explicit
2Sub setClipBoard(val As Variant)
3 'クリップボードに値を設定する
4
5 Dim dataObj As DataObject
6 Set dataObj = New DataObject
7 dataObj.SetText val
8 dataObj.PutInClipboard
9
10 Set dataObj = Nothing
11
12End Sub
1dataObj.SetText val
DataObjectに引数valの値を設定します。
1dataObj.PutInClipboard
DataObjectのPutInClipboarメソッドを使用してDataObjectの値をクリップボードに転送します。
クリップボードから値を読み込むプロシージャ
クリップボードから値を読みこむコードです。
1Option Explicit
2Function readClipBoard() As String
3 'クリップボードの値を取得して返す
4
5 Dim dataObj As DataObject
6 Set dataObj = New DataObject
7
8 dataObj.GetFromClipboard
9 readClipBoard = dataObj.GetText
10
11 Set dataObj = Nothing
12
13End Function
1dataObj.GetFromClipboard
クリップボードの値をDataObjectに転送します。
1readClipBoard = dataObj.GetText
DataObjectの値を戻り値として格納します。
クリップボードのテスト
テストコードは以下になります。
1Option Explicit
2Sub testClipBoard()
3
4 Dim val As String
5 val = InputBox("何か入力してください")
6
7 Call setClipBoard(val)
8 MsgBox "クリップボードの値は「" & readClipBoard & "」です。"
9
10End Sub
インプットボックスが表示されるので値を入力します。

setClipBoardプロシージャを利用して、「あいうえお」の文字列をクリップボードに流し込みます。
readClipBoardプロシージャでクリップボードの値を読み込んでメッセージボックスに表示します。
