【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プロシージャでクリップボードの値を読み込んでメッセージボックスに表示します。

関連ページ