「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で行う方法を解説しました。
なおこれは、一例にすぎません他にもっと良い方法があるかもしれません。