VBA 失敗しない文字列をクリップボードへコピーする方法

「Microsoft Forms 2.0 Object Library」を使わない。
以前は、MSFormsオブジェクトのPutInClipboardメソッドをよく使ってましたが
最近のWindows10では、不安定で動作しなことが有ります。

確実にクリップボードへコピーする方法

「SetClip」と言う簡単な関数を作りました。

SetClip関数ソースコード

' 文字列をクリップボードへコピー
' usage  SetClip "文字列"
Sub SetClip(S As String)
  With CreateObject("Forms.TextBox.1")
    .MultiLine = True
    .Text = S
    .SelStart = 0
    .SelLength = .TextLength
    .Copy
  End With
End Sub

このSetClip関数は、用途に応じてPublic, Private属性を付けたり付けなかったりしてください。

SetClip関数ソースコード解説

フォームオブジェクトのTextBoxを作成して
それに、文字列を格納後
TextBoxのCopyメソッドでクリップボードへコピーしています。
最後のEnd Sub(subプロシージャの終わり)でForm.TextBoxオブジェクトも解放
と言う流れになっています。

SetClip関数使い方

使い方は簡単で、
SetClip “文字列”
です。

例としてのソース

' SetClip関数使い方1( 変数渡し)
Dim Mojiretu as String
Mojiretu = "今日は、良い天気です。"

SetClip Mojiretu


' SetClip関数使い方2(文字列直接渡し)
SetClip "今日は、良い天気です。"

VBA 失敗しない文字列をクリップボードへコピーする方法まとめ

文字列をコピペする場合は、
まず移したい文字列を選択して、
右クリックメニューの「コピー」(または、CTRL + c
この時文字列は、一旦Windowsシステムのクリップボードにコピーされます。
その後貼り付ける位置にカーソルを移動して、
右クリックメニューの「貼り付け」(または、CTRL + v
この時は、クリップボードの内容がターゲットへコピーされます。
この一連の動作で、コピペが行われています。
文字列に限らず、ファイルの場合も、クリップボードへコピーされる内容が異なりますが
同様の動作でコピペが行われます。

この前半のクリップボードへ文字列をコピーする動作を
VBAで行う方法を解説しました。
なおこれは、一例にすぎません他にもっと良い方法があるかもしれません。