← コード一覧へ戻る
実務メニュー

自作メニューから組み込みのコピー機能を呼び出す

自作メニューの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に組み込まれた機能を呼び出します。

  1. 作成

    自作ボタンを持つ一時ポップアップを作る

  2. クリック

    Copyコマンドが使えるか確認して実行

  3. 結果

    選択セルがコピーされ、一時メニューが片付く

クリップボードはコピーした内容に変わります。セル自体には貼り付けません。

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

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

    Windows版Excelの標準モジュールへコードを貼り付けます。

  2. 2

    練習用のセルを選択し、ShowBuiltInCopyMenu5507を実行します。

  3. 3

    メニューのコピーを選ぶと選択セルをコピーします。貼り付けは手動で行い、試した後はEscでコピー状態を解除します。

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