このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

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

2022年3月13日

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

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

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

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

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

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

VBAが難しいと感じたら
ココナラにてマクロ(VBA)の作成代行を始めました。
ご依頼はこちらから

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

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)の作成代行を始めました。
ご依頼はこちらから

VBA

Posted by やろまい