0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VBAでセルの値に文字列を追加しつつクリップボードに放り込むツールを作ってみた

Posted at

まえがき

前回記事のあとがきで書いた通りクリップボード扱いたいということでクリップボードを扱えるdataObjectをほんの少し触りました。前回記事は下記リンクをご参照下さい。
前回記事(VBAで文字列、数値をSQLのIN句に入れる形にする)

コード

文字列型変数に選択範囲の値を突っ込みクリップボードに放り込む!以上!

Copy.bas

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のデータを定型的に成形する場合に活用できると思います。
周りにもシェアして割と使ってもらえているようなので作った甲斐はあったのかなと思っています。
上記リンクを参考にもう少し知識深めながら弄っていこうかなと思っています。
もっと便利で合理的でシンプルなプロセスがあればご教示いただきたく存じます。
以上、宜しくお願い致します。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?