クリップボードにテキストを送る/読み取る

文書上でコピーや貼り付けをすることなくクリップボードとやり取りをします。マクロで合成したテキストをクリップボードに送ったり、クリップボード内のテキスト情報を読み取ったりします。

テキストをクリップボードに直接送るマクロ

入力情報などからマクロで合成したテキストをクリップボードに送ります。テキストは他のアプリに貼り付けて利用できます。

'参照: 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 で、データから書式情報などを除いたテキストを抽出します。

Officeクリップボードの内容は、[ホーム]タブの[クリップボード]から確認できます。システムのクリップボードの内容は、Windows+ V キーを押して表示される画面で確認できます。

 

クリップボードによる一時利用ではなく、ファイルとして残したい場合はこちらをどうぞ。

タイトルとURLをコピーしました