※全てのExcelで動作する保証はありません。また、内容に関し管理人は全ての責任を負いかねます

 

目的

クリップボード内のテキストデータが欲しい。画像データなどテキスト以外は処理をしない。

 

処理の流れ

クリップボードの中身をチェックし、テキスト形式のデータがあるのかチェック。

無ければ、メッセージを出して処理を抜ける。テキストデータがあるのなら続行。

クリップボードからテキストデータをワーク領域(w_str)へ転送。

(記載していませんが、この後はワーク領域の文字列に対する処理です)

 

サンプルコード

    Dim aFmts As Variant
    Dim fmt As Variant
    Dim sw_on As Boolean
    Dim w_str As String
    
'チェック処理
    aFmts = Application.ClipboardFormats
    sw_on = False

    For Each fmt In aFmts
        If fmt = xlClipboardFormatText Then
            sw_on = True
            Exit For
        End If
    Next

    If sw_on = False Then
        'クリップボードが空の時も
        MsgBox "クリップボードにテキストはありません", vbExclamation
        Exit Sub
    End If
'チェック処理
    
'メイン処理
    With New MSForms.DataObject
        .GetFromClipboard
    
        w_str = .GetText
    End With
'メイン処理

 

※MSForms.DataObjectでエラーになる場合は一番下のリンク先サイト様をご覧下さい。

 

この記事は下記のサイトを参考にさせて頂きました。謝辞

・チェック処理

Application.ClipboardFormats プロパティ (Excel) | Microsoft Docs

XlClipboardFormat 列挙 (Excel) | Microsoft Docs

・メイン処理、MSForms.DataObjectについて

クリップボードとデータのやりとりをする:Excel VBA|即効テクニック|Excel VBAを学ぶならmoug



ȥåץڡ