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

VBAをでクリップボードの値を読み込んだり、書き込んだりするにはDataObjectを使用します。

参照するライブラリ

DataObjectを利用するにはMicrosoft Forms 2.0 Object libraryに参照設定を行う必要があります。 参照設定の設定方法についてはこちらをご覧ください。

VBAで参照設定を行う

参照設定にMicrosoft Forms 2.0 Object libraryがない場合はこちらをご覧ください。

【VBA】参照設定でファイルが見つからないのときの解決方法

コード

クリップボードに値を設定するプロシージャ

クリップボードに値を設定するコードは以下になります。

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

Licensed under CC BY-NC-SA 4.0
最終更新 2018年8月11日 02:16
Hugo で構築されています。
テーマ StackJimmy によって設計されています。