まえがき
前回記事のあとがきで書いた通りクリップボード扱いたいということでクリップボードを扱えるdataObjectをほんの少し触りました。前回記事は下記リンクをご参照下さい。
前回記事(VBAで文字列、数値をSQLのIN句に入れる形にする)
コード
文字列型変数に選択範囲の値を突っ込みクリップボードに放り込む!以上!
Sub String_Copy()
Dim strHolder As String
Dim intNum As Integer
Dim dataObject As New dataObject
strHolder = "'" & Selection(1).Value & "'"
For intNum = 2 To Selection.Count Step 1
strHolder = strHolder & vbCrLf & ",'" & Selection(intNum).Value & "'"
Next
'データオブジェクトに文字列をセット
dataObject.SetText strHolder
'データオブジェクトにセットされた値をクリップボードへ格納
dataObject.PutInClipboard
End Sub
dataObjectを扱うためには参照設定が必要
エディタの上部から、ツール>参照設定から「Microsoft Forms 2.0 Object Library」を選択します。見つからなければ参照設定>参照から「C:\Windows\System32\FM20.DLL」を選択します。
クリップボード周りを触れるdataObject
今回はSetText,PutInClipboardを利用しましたが、他にも
- GetFormat(クリップボード内のデータ形式を判別する時に)
- GetText,GetFromClipboard(今回とは逆にクリップボード内からデータを取得する時に)
- StartDrag(マウスのドラッグ操作を行いたい時に)
- Clear(クリップボードを空にしたい時に)
というメソッドがあります。
ただ、調査時にちらと見かけたのはSetTextすると文字化けするというものです…
リンク(外部サイト)
私は遭遇したことはありませんが、注意は必要かもしれません。
あとがき
簡単に実装できるにしては結構役立ってます。業務作業によって形は変わると思いますが、Excelのデータを定型的に成形する場合に活用できると思います。
周りにもシェアして割と使ってもらえているようなので作った甲斐はあったのかなと思っています。
上記リンクを参考にもう少し知識深めながら弄っていこうかなと思っています。
もっと便利で合理的でシンプルなプロセスがあればご教示いただきたく存じます。
以上、宜しくお願い致します。