クリップボードに保存する方法/クリップボードから取得する方法(VBA)

2021年4月24日

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

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

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

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

では、マクロを使ってクリップボードに保存する方法と、反対にクリップボードから取得する方法の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

Posted by やろまい