【VBA】クリップボードに貼り付ける/コピーする方法

2022年3月13日

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

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

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

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

今回は次の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上級者を目指したい人にはパーフェクトExcel VBA一択です。

created by Rinker
技術評論社
¥3,608 (2022/07/01 11:26:51時点 Amazon調べ-詳細)

《マクロ作成に困ったら》
自分で作るのが難しいと感じたら、プロに作ってもらう手もあります。
マクロ(VBA)の依頼におすすめのプログラマーを紹介の記事をご覧ください。

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

VBA

Posted by やろまい