VBA開発

ExcelVBAマクロ「指定したキーワードをクリップボードへコピーする」をパーツ化する

パーツ化とは

ExcelVBAマクロ初級者からの脱却が、処理のパーツ化(プロシージャの分割)と考えています。
マクロを作る上で基本機能をパーツ化する事で、開発時間の削減に繋がります。

分かりやすく説明すると、エクセルの「関数」と同様です。
SUM関数であれば セル内に「=SUM(1+2+3)」と記載すれば、セルには「6」と表示されますよね。
値を渡せば正しい値で返ってくる動きです。

このコードをコピペでOK

'■指定したキーワードをクリップボードへコピーする
Public Function call_ClipBoardSave(temp As String)
    Dim ClipBoard As New DataObject
    
    With ClipBoard
        .SetText temp
        .PutInClipboard
    End With
    
End Function

使い方

上記をコピペでお好きなモジュール内に記載してください。

    Dim temp As String
    
    temp = "この文章をクリップボードへコピーします"
    
    call_ClipBoardSave (temp)

結果イメージ

クリップボードに「この文章をクリップボードへコピーします」がコピーされます。

Ctrl+Cで該当の文章をコピーした状態ですので、
Ctrl+Vでそのまま貼り付けすることができます。(もちろんエクセル以外にも貼り付けする事が可能です)

注意点

  • 上記コードを使用するには「Microsoft Forms 2.0 Object Library」を参照設定する必要があります。
    VBA上でユーザーフォームを挿入すると自動的にこのライブラリが参照設定されます。

VBAコード上のメニューで以下処理を行い、ユーザーフォーム挿入します。

メニュー→[挿入(I)]→[ユーザーフォーム(U)]

ユーザーフォームが不要であれば、ユーザーフォームを削除してください。

どんな時に使える?

エクセルマクロ単体では変数で代用できるため、あまり使用するケースは少ないかもしれません。
以下のような外部ソフトと連動や、外部とのやり取りする場合に使います。

例)マクロ上で商品コードでの検索をして検索結果になかった場合
エラー原因をエクセル外(業務ソフト側)で調査する時に、該当の商品コードがコピーが出来ていれば作業効率があがります。
例)オークションサイトでの文面のやり取りに、定型文などの文面のコピーさせる。
マクロを実行後、都度やり取り必要な情報をコピペでやり取りする事で、人が作業する内容が減ります。
例)定形進捗報告メール、売上報告など、毎日必要な内容を提携でやり取りする。
メール報告やLINE報告が必要な場合があると思います。Windowsの機能を使用し、コピーする形なのでエクセルの枠を超えて使用可能です。

その他)クリップボードからデータを取得する方法

以下のコードのようにGetFromClipboardを使用してクリップボードからデータ取得も可能です。

    Dim ClipBoard As New DataObject
    
    With ClipBoard
        .GetFromClipboard
        MsgBox GetFromClipboard
    End With

 

 

コメント

タイトルとURLをコピーしました