Softex CelwareTech Blog
Excel VBA2026-06-02

Excel VBAでクリップボードの文字列を取得する汎用関数 GetClipText

Excel VBAからクリップボード内の文字列を取得し、Stringとして返す汎用関数GetClipTextを解説します。MCCLoopArray1Dの子部品として、配列名をクリップボードから受け取る用途にも使えます。

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

概要

GetClipTextは、クリップボードに入っている文字列を取得し、Stringとして返すExcel VBA汎用関数です。

ユーザーがコピーした文字列や、別の処理がクリップボードへ入れた文字列を、VBA側で読み取って再利用したい場面で使います。

たとえば、一次元配列ループの雛形を生成するMCCLoopArray1Dでは、事前にコピーしておいた配列名をGetClipTextで取得し、その文字列を使ってループコードを生成しています。

使う場面

  • コピー済みの文字列をVBAで読み取りたい
  • クリップボード経由で、外部アプリや別マクロから文字列を受け取りたい
  • 文字列をセル、フォーム、変数へ取り込みたい
  • コード生成補助マクロで、コピー済みの変数名や配列名を入力値として使いたい
  • ClipTextでクリップボードへ格納した文字列を、別処理で取得したい

ClipTextが「文字列をクリップボードへ入れる」部品であるのに対し、GetClipTextは「クリップボードから文字列を取り出す」部品です。

処理イメージ

ユーザーが文字列をコピー
  ↓
GetClipText
  ↓
DataObject.GetFromClipboard
  ↓
DataObject.GetText
  ↓
Stringとして返す

単体では小さな関数ですが、コード生成補助や文字列加工処理では入力口として使いやすい部品です。

使用例

現在クリップボードに入っている文字列を、イミディエイトウィンドウへ出力する例です。

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

事前に「テスト文字列」をコピーしてから実行すると、イミディエイトウィンドウに次のように表示されます。

テスト文字列

コピー可能な実装コード

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

初心者向けコード解説

Public Function GetClipText() As Stringは、文字列を返す関数です。引数はなく、現在のクリップボード状態を読み取ります。

Public Function GetClipText() As String

On Error Resume Nextは、クリップボードに文字列以外の内容が入っている場合でも、処理全体を止めにくくするための記述です。クリップボードには、画像、ファイル、図形、空データなどが入っていることもあります。その状態で.GetTextを実行するとエラーになる可能性があります。

On Error Resume Next

Dim Clip As New DataObjectでは、DataObjectを作成しています。DataObjectはMSForms系のオブジェクトで、クリップボードの文字列を扱うときに使えます。

Dim Clip As New DataObject

.GetFromClipboardで現在のクリップボード内容をDataObjectへ読み込み、.GetTextで文字列として取り出します。

.GetFromClipboard
Output = .GetText

最後にOn Error GoTo 0でエラー無視の状態を解除し、GetClipText = Outputで取得した文字列を関数の戻り値にします。

On Error GoTo 0
GetClipText = Output

VBAでは、関数名に値を代入することで戻り値を設定します。この場合、Outputに入った文字列がGetClipText()の結果になります。

MCCLoopArray1Dとの関係

GetClipTextは、MCCLoopArray1Dの下位にある子部品として使われます。

MCCLoopArray1D
  ↓
MakeClipCodeLoopArray1D
  ↓
GetClipText
  ↓
コピー済みの配列名を取得
  ↓
一次元配列ループのコードを生成
  ↓
ClipTextで生成コードをクリップボードへ格納

この流れでは、GetClipTextが「ユーザーがコピーした配列名を受け取る入口」になります。親処理であるMakeClipCodeLoopArray1Dは、取得した文字列を配列名として使い、For I = 1 To Nの雛形コードを組み立てます。

つまり、GetClipTextは単なるクリップボード取得関数ではなく、コード生成補助マクロの入力部品としても重要です。

注意点

  • DataObjectを使うため、VBEの「ツール」→「参照設定」でMicrosoft Forms 2.0 Object Libraryが必要になる場合があります。
  • クリップボードに画像やファイルなど、文字列以外の内容が入っている場合は、空文字が返ることがあります。
  • On Error Resume Nextでエラーを握りつぶすため、原因調査が必要な処理ではErr.NumberErr.Descriptionを確認する形に変更してください。
  • クリップボードの内容はユーザー操作にも依存します。実行直前に何がコピーされているかを前提にする処理では、空文字チェックを入れると安全です。
  • パスワード、APIキー、個人情報などの機密情報をクリップボードから扱う場合は、誤ってログやセルへ出力しないよう注意します。

関連記事

軽いまとめ

GetClipTextは、クリップボード内の文字列をVBAから取得するための小さな汎用関数です。

単体ではシンプルですが、ClipTextと組み合わせると、VBAで「文字列を生成してコピーする」「コピー済み文字列を取得して次の処理に使う」という流れを作れます。

特にMCCLoopArray1Dのようなコード生成補助マクロでは、コピー済みの配列名を受け取る子部品として再利用しやすいプロシージャです。

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

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

無料相談はこちら →