【VBA】クリップボードに貼り付ける方法/クリップボードから取得する方法

2021年11月17日

マクロで作ったデータを最後に、他のシステムにコピペしたいことってありませんか?

そうした時、セルからいちいちコピーするのは結構面倒に感じません?
末尾に余分なスペースが入りますし。

こうした面倒は、マクロでクリップボードを操れば解決します!

手作業を挟むのが問題なんです。マクロでやりきってしまうのが一番簡単です。

今回は次の2つのやり方を紹介します。

  • マクロでクリップボードに貼り付ける方法
  • マクロでクリップボードから取得する方法

クリップボードに貼り付ける方法

Public Sub SetCB(ByVal strSet As String)
'クリップボードにstrSetを貼り付ける

    '文字化け対策のためTextBoxを使用
    With CreateObject("Forms.TextBox.1")
        .MultiLine = True '複数行入力可
        .Text = strSet
        .selstart = 0
        .sellength = .textlength
        .Copy
    End With
End Sub

クリップボードに貼り付ける方法は使い回しできるように、簡単なプロシージャにしました。

Sub SetSample()
    Call SetCB ("hoge")
End Sub

メインのマクロにはこのようにSetCB(“コピーしたい文字列")と書けば、プロシージャが呼び出されてクリップボードに貼り付けされます。

ちなみに、文字化け対策のためデータオブジェクトではなく、テキストボックス(Forms.TextBox.1)を使用しています。

詳細を知りたい方は、こちらの記事が詳しいので参照してみてください。
https://vba-create.jp/vba-error-clipboard-copy/

クリップボードから取得する方法

Public Function GetCB() As String
'クリップボードの文字列を取得して返す

    'MSForms.DataObjectを使用
    With CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
        .GetFromClipboard
        GetCB = .GetText
    End With
End Function

クリップボードから取得する方法についても、使い回しできるように簡単な関数にしてあります。

Sub GetSample()
    MsgBox GetCB
End Sub

メインのマクロにはこのようにGetCBと書けば、現在クリップボードに保存されている文字列を取得することができます。

このようなちょっとした小技も使って、便利なマクロを作っていきましょう。

メールに貼り付けるなら別のやり方も

今回はクリップボードに貼り付ける方法を紹介しました。これをメールに貼り付けるというのであれ
ば、もっと便利なやり方もあります。

《VBA初心者におすすめの本》
VBA初心者には、株式会社すごい改善さんの本が分かりやすくておすすめです。

created by Rinker
技術評論社
¥2,178 (2022/01/22 17:47:34時点 Amazon調べ-詳細)

《VBA中級者向けの本》
VBA上級者を目指したい人にはパーフェクトExcel VBA一択です。

created by Rinker
技術評論社
¥3,608 (2022/01/21 23:17:25時点 Amazon調べ-詳細)

他の「VBA」の記事はこちらからどうぞ

VBA

Posted by やろまい