VBAをでクリップボードの値を読み込んだり、書き込んだりするにはDataObjectを使用します。
参照するライブラリ
DataObjectを利用するにはMicrosoft Forms 2.0 Object libraryに参照設定を行う必要があります。 参照設定の設定方法についてはこちらをご覧ください。
参照設定にMicrosoft Forms 2.0 Object libraryがない場合はこちらをご覧ください。
コード
クリップボードに値を設定するプロシージャ
クリップボードに値を設定するコードは以下になります。
Option Explicit
Sub setClipBoard(val As Variant)
'クリップボードに値を設定する
Dim dataObj As DataObject
Set dataObj = New DataObject
dataObj.SetText val
dataObj.PutInClipboard
Set dataObj = Nothing
End Sub
dataObj.SetText val
dataObj.PutInClipboard
DataObjectに引数valの値を設定します。
PutInClipboarを使用してDataObjectの値をクリップボードに転送します。
クリップボードから値を読み込むプロシージャ
クリップボードから値を読みこむコードです。
Option Explicit
Function readClipBoard() As String
'クリップボードの値を取得して返す
Dim dataObj As DataObject
Set dataObj = New DataObject
dataObj.GetFromClipboard
readClipBoard = dataObj.GetText
Set dataObj = Nothing
End Function
dataObj.GetFromClipboard
readClipBoard = dataObj.GetText
クリップボードの値をDataObjectに転送します。
DataObjectの値を戻り値として格納します。
クリップボードのテスト
テストコードは以下になります。
Option Explicit
Sub testClipBoard()
Dim val As String
val = InputBox("何か入力してください")
Call setClipBoard(val)
MsgBox "クリップボードの値は「" & readClipBoard & "」です。"
End Sub
インプットボックスが表示されるので値を入力します。
setClipBoardを利用して、「あいうえお」の文字列をクリップボードに流し込みます。
readClipBoardでクリップボードの値を読み込んでメッセージボックスに表示します。