EXCEL VBAメモ - クリップボードのアクセス
クリップボードへのアクセスは、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