← コード一覧へ戻る
実務Excel・Windows連携

練習用の文字列をクリップボードへコピーする

Microsoft FormsのDataObjectで定型文をコピーし、読み戻して一致を確認します。

実行前に確認

  • 他のアプリを含む現在のクリップボードに影響します。必要なコピー内容は先に別の場所へ貼り付けて保管してください。
  • 参照設定が見つからない・利用できない環境では中止します。DLLのダウンロードや登録、セキュリティ制限の解除はしません。
  • DataObjectはこの例ではテキストだけを扱います。画像やすべての形式を保ったバックアップ・復元にはなりません。
  • 公式仕様とコードを照合した例です。Excel実機での実行は未検証です。業務ブックではなくコピーで試してください。

1サンプルコード

Option Explicit
Sub PracticeAdvanced8048()
    Dim data As MSForms.DataObject, check As MSForms.DataObject
    If MsgBox("クリップボードの現在の内容を練習用の文字に置き換えますか?" & vbCrLf & _
        "元のクリップボード内容は復元できません。", _
        vbYesNo + vbExclamation + vbDefaultButton2) <> vbYes Then Exit Sub
    On Error GoTo Failed
    Set data = New MSForms.DataObject
    data.SetText "VBA clipboard sample", 1
    data.PutInClipboard
    Set check = New MSForms.DataObject
    check.GetFromClipboard
    If check.GetFormat(1) Then
        If check.GetText(1) = "VBA clipboard sample" Then
            MsgBox "練習用文字列をコピーできました。"
        Else
            MsgBox "読み戻した文字が一致しません。ほかのアプリによる変更が考えられます。"
        End If
    Else
        MsgBox "文字として読み戻せませんでした。"
    End If
    Exit Sub
Failed:
    MsgBox "クリップボード処理を完了できません: " & Err.Description
End Sub

図で見る操作の流れ

イメージ図

準備、実行する操作、確認する結果の順で示しています。

  1. 準備

    Windows版Excelの練習用ブックで、VBEの[挿入]→[ユーザーフォーム]を1つ追加します。Microsoft Forms 2.0 Object Libraryの参照が加わったことを[ツール]→[参照設定]で確認し、コードは標準モジュールに貼ります。

  2. 操作

    Microsoft FormsのDataObjectで定型文をコピーし、読み戻して一致を確認します。

  3. 結果

    VBA clipboard sampleが貼り付けられます。現在のクリップボード内容は練習用文字に置き換わります。

他のアプリを含む現在のクリップボードに影響します。必要なコピー内容は先に別の場所へ貼り付けて保管してください。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
  1. 1

    Windows版デスクトップExcelの練習用ブックを.xlsmで保存し、Alt+F11→[挿入]→[標準モジュール]へ、この例だけを貼り付けます。

  2. 2

    Windows版Excelの練習用ブックで、VBEの[挿入]→[ユーザーフォーム]を1つ追加します。Microsoft Forms 2.0 Object Libraryの参照が加わったことを[ツール]→[参照設定]で確認し、コードは標準モジュールに貼ります。

  3. 3

    PracticeAdvanced8048を実行して置き換えを承認します。終わったらメモ帳などの空欄へCtrl+Vで貼り付けます。

  4. 4

    VBA clipboard sampleが貼り付けられます。現在のクリップボード内容は練習用文字に置き換わります。

使っている機能の公式ドキュメント(Microsoft Learn)