文書上でコピーや貼り付けをすることなくクリップボードとやり取りをします。マクロで合成したテキストをクリップボードに送ったり、クリップボード内のテキスト情報を読み取ったりします。
テキストをクリップボードに直接送るマクロ
入力情報などからマクロで合成したテキストをクリップボードに送ります。テキストは他のアプリに貼り付けて利用できます。
'参照: Microsoft Forms 2.0 Object Library
Public Sub クリップボードに転記()
Dim oData As New DataObject
Dim txtVal As String
txtVal = Range("B2").Value & vbCrLf & Range("B3").Value & vbCrLf & Range("B4").Value
oData.SetText txtVal
oData.PutInClipboard
End Sub
クリップボード内のテキストを取り出すマクロ
DataObject オブジェクトを介して、すでにクリップボードにセットされているテキストを取り出すこともできます。貼り付け前に内容をチェックするような使い方ができます。
'参照: Microsoft Forms 2.0 Object Library
Public Sub クリップボードから取り出し()
Dim oData As New DataObject
Dim txtVal As String
oData.GetFromClipboard
If oData.GetFormat(1) = False Then Exit Sub
txtVal = oData.GetText
End Sub
解説
クリップボードとDataObjcet オブジェクト
クリップボードとのやりとりは、フォーム用オブジェクトのDataObject を介して行います。上記の例では参照設定に「Microsoft Forms 2.0 Object Library」を加える必要があります。
DataObject で扱えるのはテキストデータだけです。
SetText "テキスト内容”
でオブジェクトにテキストをセットします。
PutInClipboard
でオブジェクトにセットされたテキストをクリップボードに転記します。
データの取り出し、判定、抽出
まず、GetFromClipboard
で、DataObject にクリップボードのデータを取り出します。
GetFormat(1)
で、データ形式がテキストかどうかを判定します。空や画像データの場合はFalseが返ります。
GetText
で、データから書式情報などを除いたテキストを抽出します。
クリップボードによる一時利用ではなく、ファイルとして残したい場合はこちらをどうぞ。