クリップボードへのアクセスは、DataObjectを介して行う。
またクリップボードが空か否か、どんなデータが入っているかの確認はApplication.ClipboardFormatsを使用する。
- データ種別を示す定数の参照先:XlClipboardFormat 列挙 (Excel) - MSDN
' クリップボードからテキストを読み出す
Sub getTextFromClipBoard()
Dim i As Long
Dim buf As String
' クリップボードを中継するオブジェクト
Dim CBrd As New DataObject
' クリップボードの状態を確認する
Dim CBFmt As Variant: CBFmt = Application.ClipboardFormats
Dim isText As Boolean: isText = False
If CBFmt(1) = True Then
MsgBox "クリップボードは空です"
Exit Sub
Else
' MsgBox "UBound(CBFmt) = " & UBound(CBFmt)
' For i = 1 To UBound(CBFmt)
' MsgBox TypeName(CBFmt(i))
' Next
' クリップボード内のデータ種別の確認
For i = 1 To UBound(CBFmt)
' https://msdn.microsoft.com/ja-jp/library/office/ff839748.aspx
If CBFmt(i) = xlClipboardFormatText Then isText = True: Exit For
Next
' テキスト取り出し
If isText Then
CBrd.GetFromClipboard
buf = CBrd.GetText
MsgBox buf
Else
MsgBox "テキストではありません"
End If
End If
Set CBrd = Nothing
End Sub
' クリップボードへテキストをセット
Sub putTextToClipBoard()
Dim buf As String
Dim CBrd As New DataObject
buf = "あいうえお"
CBrd.SetText buf
CBrd.PutInClipboard
Set CBrd = Nothing
End Sub