【VBA】クリップボードに貼り付ける/コピーする方法
マクロで作ったデータを最後に、他のシステムにコピペしたいことってありませんか?
そうした時、セルからいちいちコピーするのは結構面倒に感じません?
末尾に余分なスペースが入りますし。
こうした面倒は、マクロでクリップボードを操れば解決します!
手作業を挟むのが問題なんです。マクロでやりきってしまうのが一番簡単です。
今回は次の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と書けば、現在クリップボードに保存されている文字列を取得することができます。
このようなちょっとした小技も使って、便利なマクロを作っていきましょう。
メールに貼り付けるなら別のやり方も
今回はクリップボードに貼り付ける方法を紹介しました。これをメールに貼り付けるというのであれ
ば、もっと便利なやり方もあります。