自作メニューから組み込みのコピー機能を呼び出す
自作メニューのOnActionからExecuteMso("Copy")を呼び、Excelのコピー機能を実行します。
実行前に確認
- CommandBarsは旧式APIです。リボンのタブを追加するコードではありません。
- コピーが利用できない選択状態では実行せず終了します。
- コピーするとクリップボードの内容が置き換わります。必要な内容が残っていないことを確認してください。
- Excel実機での実行は未確認です。
1サンプルコード
Option Explicit
Sub ShowBuiltInCopyMenu5507()
Dim menu As Office.CommandBar
Dim button As Office.CommandBarButton
On Error GoTo Failed
Set menu = Application.CommandBars.Add(Position:=msoBarPopup, Temporary:=True)
Set button = menu.Controls.Add(Type:=msoControlButton, Temporary:=True)
button.Caption = "選択セルをコピー"
button.OnAction = "'" & Replace(ThisWorkbook.Name, "'", "''") & "'!RunBuiltInCopy5507"
menu.ShowPopup
CleanUp:
On Error Resume Next
If Not menu Is Nothing Then menu.Delete
On Error GoTo 0
Exit Sub
Failed:
MsgBox Err.Description, vbExclamation
Resume CleanUp
End Sub
Public Sub RunBuiltInCopy5507()
On Error GoTo Failed
If Not Application.CommandBars.GetEnabledMso("Copy") Then
MsgBox "現在はコピーできません"
Exit Sub
End If
Application.CommandBars.ExecuteMso "Copy"
Exit Sub
Failed:
MsgBox Err.Description, vbExclamation
End Sub図で見る組み込みコマンドの利用
イメージ図一時メニューからExcelに組み込まれた機能を呼び出します。
作成
自作ボタンを持つ一時ポップアップを作る
クリック
Copyコマンドが使えるか確認して実行
結果
選択セルがコピーされ、一時メニューが片付く
クリップボードはコピーした内容に変わります。セル自体には貼り付けません。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する3つの手順で、コードの使い方を確認できます
- 1
Windows版Excelの標準モジュールへコードを貼り付けます。
- 2
練習用のセルを選択し、ShowBuiltInCopyMenu5507を実行します。
- 3
メニューのコピーを選ぶと選択セルをコピーします。貼り付けは手動で行い、試した後はEscでコピー状態を解除します。