練習用の文字列をクリップボードへコピーする
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図で見る操作の流れ
イメージ図準備、実行する操作、確認する結果の順で示しています。
準備
Windows版Excelの練習用ブックで、VBEの[挿入]→[ユーザーフォーム]を1つ追加します。Microsoft Forms 2.0 Object Libraryの参照が加わったことを[ツール]→[参照設定]で確認し、コードは標準モジュールに貼ります。
操作
Microsoft FormsのDataObjectで定型文をコピーし、読み戻して一致を確認します。
結果
VBA clipboard sampleが貼り付けられます。現在のクリップボード内容は練習用文字に置き換わります。
他のアプリを含む現在のクリップボードに影響します。必要なコピー内容は先に別の場所へ貼り付けて保管してください。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
- 1
Windows版デスクトップExcelの練習用ブックを.xlsmで保存し、Alt+F11→[挿入]→[標準モジュール]へ、この例だけを貼り付けます。
- 2
Windows版Excelの練習用ブックで、VBEの[挿入]→[ユーザーフォーム]を1つ追加します。Microsoft Forms 2.0 Object Libraryの参照が加わったことを[ツール]→[参照設定]で確認し、コードは標準モジュールに貼ります。
- 3
PracticeAdvanced8048を実行して置き換えを承認します。終わったらメモ帳などの空欄へCtrl+Vで貼り付けます。
- 4
VBA clipboard sampleが貼り付けられます。現在のクリップボード内容は練習用文字に置き換わります。