[VBA][Excel]クリップボード テキストのみ


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

サンプル ※説明に必要な部分しか記述していません

■PutInClipboard

■GetFromClipboard

■Copyメソッド ※PutInClipboardが機能しない場合


下記を実行すると

Private Sub CommandButton1_Click()
'■クリップボードへの転送と取得
'シートに テキストボックス を配置して下さい

'●概要
'・セルA1に適当な文字列の入力
'・MyDataを使ってクリップボードへ転送
'・クリップボードから値を取得しテキストボックスにセット

Dim MyData As DataObject
Dim w_str As String


'クリック前に セルA1 に適当な文字列を入力して下さい
w_str = Sheet1.Range("A1").Value


Set MyData = New DataObject

MyData.SetText w_str, 1
'クリップボードへ値のセット
MyData.PutInClipboard

Set MyData = Nothing


Sheet1.TextBox1 = ""
'クリップボードから値をセット
Sheet1.TextBox1.Paste

End Sub

このようになります。

vba-excel-clipboard-settext

 

Private Sub CommandButton2_Click()
'■クリップボードからの取得 その2

'●概要
'・メモ帳などで適当な文字列を入力しコピー
'・MyDataを使ってクリップボードから取得してセルにセット

Dim MyData As DataObject


Set MyData = New DataObject

MyData.GetFromClipboard
Sheet1.Range("A6").Value = MyData.GetText

Set MyData = Nothing

End Sub

このようになります。

vba-excel-clipboard-gettext

■Copyメソッドを使う場合

原因は不明ですが PutInClipboard が機能しない場合があります。ここではシートに転送しコピーする方法で試しました。処理としては見た目が良くありませんが、やむを得ない場合の方法として掲載しました。

Private Sub CommandButton1_Click()
    Sheet1.Range("A1").Value = "Excel VBA"
    Sheet1.Range("A1").Copy

End Sub



Private Sub CommandButton1_Click()
'改行した文字列をコピーすると""が付加される例です
    Sheet1.Range("A1").Value = "Excel" & Chr(13) & Chr(10) & "VBA"
    Sheet1.Range("A1").Copy

End Sub