Softex CelwareTech Blog
Excel VBA2026-06-01

文字列をクリップボードへ格納するExcel VBA汎用プロシージャ ClipText

VBAで生成した文字列やコードをクリップボードへ格納し、すぐ貼り付けできる状態にする汎用プロシージャClipTextを解説します。

Excel VBA汎用プロシージャクリップボードMSFormsコード生成

概要

ClipTextは、指定した文字列をクリップボードへ格納するためのExcel VBA汎用プロシージャです。

引数Textに渡した文字列を一時的なForms.TextBox.1へ入れ、全選択して.Copyすることで、VBAから文字列をコピー済みの状態にします。MCCErrorEscapeのように、VBAで生成したコードテンプレートをすぐコードウィンドウへ貼り付けたい場合に使いやすい補助処理です。

使う場面

  • VBAで生成したコード文字列を、そのままVBEへ貼り付けたい
  • ログ、URL、メッセージ文などをユーザーがすぐ貼り付けられる状態にしたい
  • MCCErrorEscapeのようなコード生成補助プロシージャから、生成結果を受け渡したい
  • 改行を含む複数行テキストをまとめてコピーしたい

使用例

1行の文字列をコピーする場合は、次のように呼び出します。

使用例
vba
コードを読み込み中...

Sample_ClipTextを実行すると、次の文字列が貼り付け可能な状態になります。

この文字列をクリップボードにコピーします。

Sample_ClipText_MultiLineのように、vbCrLfでつないだ複数行の文字列もコピーできます。コード生成やメール本文の生成などでは、この複数行コピーが特に便利です。

MCCErrorEscapeとの関係

MCCErrorEscapeでは、エラー回避用テンプレートをStrへ組み立てたあと、最後にClipText(Str)を呼び出しています。

'クリップボード格納
Call ClipText(Str)

この1行があることで、生成したOn Error GoToテンプレートを手で選択してコピーする必要がなくなります。イミディエイトウィンドウからMCCErrorEscapeを実行したあと、コードウィンドウに戻って貼り付けるだけで次の作業へ進めます。

コピー可能な実装コード

ClipText.bas
vba
コードを読み込み中...

初心者向けコード解説

Public Sub ClipText(ByVal Text As String)は、コピーしたい文字列をTextとして受け取るSubプロシージャです。戻り値はなく、実行するとクリップボードの内容が書き換わります。

CreateObject("Forms.TextBox.1")では、MSFormsのテキストボックスを一時的に作っています。これはワークシート上に表示するための部品ではなく、文字列をコピーするための入れ物として使っています。

.MultiLine = Trueは、改行を含む文字列を扱えるようにする設定です。コード生成では複数行の文字列をコピーすることが多いため、この設定を入れておくと使い回しやすくなります。

.Text = Textで、引数として渡された文字列をテキストボックスへ入れます。その後、.SelStart = 0.SelLength = .TextLengthで全文を選択し、最後に.Copyでクリップボードへコピーします。

注意点

  • 実行すると、直前にユーザーがコピーしていたクリップボード内容は上書きされます。
  • Forms.TextBox.1を使うため、配布先環境でMSForms系の部品が利用できるか確認してください。通常のWindows版Excelでは使えるケースが多いですが、環境差はあります。
  • パスワード、APIキー、個人情報などの機密情報をコピーする用途では、誤貼り付けやログ残りに注意してください。
  • コード生成補助として使う場合は、生成コードを貼り付けたあとに必ず目視確認してから実行します。

関連記事

軽いまとめ

ClipTextは、VBAで作った文字列をユーザーがすぐ貼り付けられる状態にする小さな汎用部品です。

単体でも便利ですが、MCCErrorEscapeのようなコード生成補助プロシージャと組み合わせると、生成、コピー、貼り付けの流れをかなり短縮できます。

この技術で業務改善しませんか?

Excel VBA・GAS・Webアプリで業務の自動化ツールを開発しています。 「こんなことできる?」というご相談だけでもお気軽にどうぞ。

無料相談はこちら →