エラーの概要
Excelでセルをコピーすると、すぐにポップアップが表示されて作業を妨げます:
Cannot empty the Clipboard. Another program might be using the Clipboard.
OKをクリックすると消えます。もう一度コピーすると、また表示されます。毎回、必ず。
コピー自体は成功するので、データは貼り付け先に届きます。しかし、このダイアログが常に表示されると、特に大量編集やマクロ実行中の作業の流れが完全に乱されます。RDPセッションが最も多い原因ですが、Teams、Skype、または他のOfficeアプリがバックグラウンドで開いているときにも定期的に発生します。
根本原因
Windowsクリップボードは共有システムリソースです。Excelが新しいデータを書き込む前に、まず既存のデータをクリアしようとします。別のプロセスがその瞬間にクリップボードのハンドルを保持している場合、Excelのクリア操作がブロックされてエラーが発生します。
主な原因として疑われるもの:
- RDPクリップボードリダイレクト —
rdpclip.exeがローカルマシンとリモートセッション間のクリップボードイベントを橋渡しし、頻繁にクリップボードハンドルを取得します - Microsoft Teams / Skype — どちらのアプリもリンクプレビューを生成するためにクリップボードの内容を監視しています
- 他のOfficeアプリ — 「貼り付け用のデータを保持する」機能によって、WordやOutlookがクリップボードデータを保持している場合
- ExcelのOfficeクリップボード — 複数アイテムのペイン(最大24件)がシステムクリップボードと競合することがあります
- サードパーティのクリップボードマネージャー — Ditto、ClipboardFusionなどのツール
- ウイルス対策のリアルタイムスキャン — 一部のエンジンが悪意のあるコンテンツをスキャンするためにクリップボードへの書き込みを傍受します
即効修正(すぐに解決したい場合)
1. Officeクリップボードをクリアする
ExcelにはWindowsとは別の独自のクリップボードがあります。最大24件のコピーアイテムを保持でき、いっぱいになるとシステムクリップボードと競合することがあります。
- ホームタブ → クリップボードグループ → グループ右下隅の小さなダイアログランチャー矢印をクリック
- クリップボードペインですべてクリアをクリック
- ペインを閉じて、もう一度コピーを試みる
これだけで、ローカルマシンを使用している多くのユーザーのエラーが解決します。
2. Excelのオプションでポップアップを非表示にする
根本原因には対処せず、エラーダイアログを非表示にします — 急ぎの作業中には有効な回避策です:
- ファイル → オプション → 詳細設定へ移動
- 切り取り、コピー、貼り付けセクションまでスクロール
- **「コンテンツを貼り付けたときに貼り付けオプションボタンを表示する」**のチェックを外す
- **「挿入オプションボタンを表示する」**もチェックを外す
- OKをクリック
コピーは引き続き機能します。ポップアップが表示されなくなるだけです。
RDPセッションの修正
リモートデスクトップセッション内でExcelを実行していますか?その場合、rdpclip.exeがほぼ確実に原因です。再起動には約10秒かかり、すぐに問題が解決します。
rdpclip.exeを再起動する
RDPセッション内でタスクマネージャーを開くか、コマンドプロンプトで次のコマンドを実行します:
taskkill /f /im rdpclip.exe
rdpclip.exe
またはPowerShellを使用する場合:
Stop-Process -Name rdpclip -Force
Start-Process rdpclip
これにより、ローカルマシンとリモートセッション間のクリップボードブリッジがリセットされます。欠点は、再接続するたびに繰り返す必要があることです。
ログオンスクリプトで修正を自動化する
同じRDPサーバーに毎日再接続する場合、ログオンスクリプトで手動の手順をなくせます。次の内容でfix-clipboard.batを作成します:
@echo off
taskkill /f /im rdpclip.exe >nul 2>&1
start rdpclip.exe
次の2つの方法のいずれかで展開します:
- グループポリシー:ユーザーの構成 → Windowsの設定 → スクリプト(ログオン/ログオフ) → .batファイルを追加
- スタートアップフォルダー:
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startupに配置する
次回ログイン後、Excelを開く前にrdpclip.exeが自動的に再起動されます。
恒久的な修正(ロックしているプロセスを特定して削除する)
ステップ1:クリップボードを保持しているプロセスを特定する
推測するのは時間の無駄です。エラーが表示された直後にこのPowerShellスニペットを実行して、正確なプロセス名とPIDを取得します:
Add-Type -TypeDefinition @"
using System;
using System.Runtime.InteropServices;
public class ClipboardOwner {
[DllImport("user32.dll")] public static extern IntPtr GetOpenClipboardWindow();
[DllImport("user32.dll")] public static extern int GetWindowThreadProcessId(IntPtr hWnd, out int lpdwProcessId);
}
"@
$hwnd = [ClipboardOwner]::GetOpenClipboardWindow()
if ($hwnd -ne [IntPtr]::Zero) {
$pid = 0
[ClipboardOwner]::GetWindowThreadProcessId($hwnd, [ref]$pid) | Out-Null
Get-Process -Id $pid | Select-Object Name, Id, Description
} else {
Write-Output "No process currently has the clipboard open."
}
典型的な出力例:Teams 12348 Microsoft Teams — これで正確なターゲットがわかります。
または、SysinternalsのProcess Explorerを使用して、「検索」→「ハンドルまたはDLLを検索」でクリップボードハンドルを確認することもできます。
ステップ2:問題のあるアプリを終了するか設定を変更する
- Teams/Skype:Teamsの設定 → 全般 → クリップボード関連のオプションのチェックを外す、または一時的に終了する:
taskkill /f /im Teams.exe - クリップボードマネージャー:Excelで作業中はアプリを一時停止または終了する。たとえばDittoはシステムトレイアイコンに「一時停止」オプションがあります
- ウイルス対策ソフト:クリップボードスキャンの除外リストにExcel.exeを追加する — 正確な設定はベンダーのドキュメントを確認してください
- Word/Outlook:クリップボードペインを開く → 下部のオプションをクリック → **「Officeクリップボードを自動的に表示しないでコレクトする」**のチェックを外す
ステップ3:不要な場合はRDPのクリップボード共有を無効にする
ローカルマシンとリモートサーバー間でコピー&ペーストが不要な場合は、クリップボードリダイレクトを完全に無効にすることで、rdpclip.exeの競合を根本から排除できます。
接続前にリモートデスクトップ接続(mstsc.exe)を開きます:
- オプションの表示 → ローカルリソースタブをクリック
- ローカルデバイスとリソースの下で**詳細...**をクリック
- クリップボードのチェックを外す
この設定を保持するには、RDP設定を.rdpファイルに保存して、次の行を追加します:
redirectclipboard:i:0
毎回サーバーアドレスを入力する代わりに、その.rdpファイルを開いて接続します。
開発者向けVBA回避策
ループ内でセルをコピーするマクロ — たとえば500行をループして各行を別のシートにコピーする場合 — ほぼすべてのイテレーションでこのエラーが発生します。2行追加するだけで解決します。
Sub ClearClipboardSafe()
On Error Resume Next
Application.CutCopyMode = False ' Releases Excel's copy mode and the marching ants border
On Error GoTo 0
End Sub
ループ内の各コピー操作の後にClearClipboardSafeを呼び出します。重要な行はApplication.CutCopyMode = Falseです — これにより、点線の枠線が表示されたままクリップボードを保持し続けるのではなく、すぐにクリップボードを解放するようExcelに指示します。
マクロでWindowsクリップボードも(Excelだけでなく)クリアする必要がある場合は、CutCopyModeの行の後に次を追加します:
CreateObject("htmlfile").ParentWindow.ClipboardData.ClearData()
これは遅延バインディングを使用しており(追加の参照設定不要)、Excel 2016から365まで動作します。
確認手順
修正を適用した後、次の確認を行います:
- 範囲を選択してCtrl+Cを押す — ポップアップが表示されないことを確認
- 10セル以上を素早くコピーする — エラーが再発しないことを確認
- RDPセッションでExcelからデータをコピーし、ローカルアプリ(メモ帳でOK)に貼り付ける — クリップボードリダイレクトがサイレントに動作することを確認
- PowerShellのクリップボードオーナースクリプトを再実行する — 期待される出力:
No process currently has the clipboard open.
まとめ
- RDPセッション:
rdpclip.exeを再起動する — 30秒以内に約80%のケースが解決 - ローカルマシン:PowerShellスニペットを実行してロックしているプロセスを特定し、終了するか設定を変更する
- 即時対応:Officeクリップボードペインをクリアするか、Excelの詳細設定で貼り付けオプションのチェックを外す
- マクロ:ループ内の各コピー操作の後に
Application.CutCopyMode = Falseを追加する

