Lỗi Là Gì
Bạn copy một ô trong Excel và ngay lập tức một hộp thoại popup xuất hiện làm gián đoạn công việc:
Cannot empty the Clipboard. Another program might be using the Clipboard.
Nhấn OK — nó biến mất. Copy lại — nó hiện ra. Lần nào. Cũng vậy.
Thao tác copy vẫn thực hiện được, dữ liệu vẫn paste được bình thường. Nhưng cái hộp thoại liên tục xuất hiện đó phá vỡ hoàn toàn luồng làm việc của bạn, đặc biệt khi chỉnh sửa hàng loạt hoặc chạy macro. Phiên RDP là thủ phạm phổ biến nhất, tuy nhiên lỗi này cũng thường xuyên xuất hiện khi Teams, Skype, hay một ứng dụng Office khác đang chạy ngầm.
Nguyên Nhân
Windows Clipboard là tài nguyên hệ thống dùng chung. Trước khi Excel có thể ghi dữ liệu mới vào clipboard, Excel phải xóa dữ liệu cũ trước. Lỗi xảy ra khi một tiến trình khác đang giữ handle mở trên clipboard đúng vào thời điểm đó — chặn thao tác xóa của Excel.
Những thủ phạm thường gặp:
- Chuyển hướng clipboard RDP —
rdpclip.execầu nối sự kiện clipboard giữa máy local và phiên remote; nó chiếm handle clipboard liên tục - Microsoft Teams / Skype — cả hai ứng dụng theo dõi nội dung clipboard để tạo preview link
- Các ứng dụng Office khác — Word hoặc Outlook đang giữ dữ liệu clipboard thông qua tính năng "giữ dữ liệu để paste"
- Office Clipboard của Excel — thanh panel nhiều mục (tối đa 24 mục) có thể xung đột với clipboard hệ thống
- Phần mềm quản lý clipboard bên thứ ba — Ditto, ClipboardFusion, hoặc các công cụ tương tự
- Quét thời gian thực của phần mềm diệt virus — một số engine chặn thao tác ghi clipboard để quét nội dung độc hại
Khắc Phục Nhanh (Giải Quyết Tức Thì)
1. Xóa Office Clipboard
Excel có clipboard riêng, tách biệt với Windows. Nó lưu tối đa 24 mục đã copy và có thể xung đột với clipboard hệ thống khi bị đầy.
- Vào tab Home → nhóm Clipboard → nhấn vào mũi tên mở hộp thoại nhỏ (góc dưới bên phải của nhóm)
- Trong panel Clipboard, nhấn Clear All
- Đóng panel và thử copy lại
Chỉ bước này thôi đã giải quyết được lỗi cho nhiều người dùng trên máy local.
2. Tắt Popup Qua Cài Đặt Excel
Cách này ẩn hộp thoại lỗi mà không xử lý nguyên nhân gốc — là giải pháp tạm thời hợp lý khi bạn đang làm việc gấp:
- Vào File → Options → Advanced
- Cuộn đến mục Cut, copy, and paste
- Bỏ chọn "Show Paste Options button when content is pasted"
- Bỏ chọn thêm "Show Insert Options buttons"
- Nhấn OK
Thao tác copy vẫn hoạt động. Bạn chỉ không thấy popup nữa thôi.
Khắc Phục Cho Phiên RDP
Đang chạy Excel trong phiên Remote Desktop? Thì rdpclip.exe gần như chắc chắn là nguyên nhân. Khởi động lại nó chỉ mất khoảng 10 giây và khắc phục ngay lập tức.
Khởi Động Lại rdpclip.exe
Trong phiên RDP, mở Task Manager hoặc chạy các lệnh sau trong Command Prompt:
taskkill /f /im rdpclip.exe
rdpclip.exe
Hoặc dùng PowerShell:
Stop-Process -Name rdpclip -Force
Start-Process rdpclip
Thao tác này reset cầu nối clipboard giữa máy local và phiên remote. Nhược điểm: bạn phải làm lại mỗi lần kết nối lại.
Tự Động Hóa Với Logon Script
Nếu bạn kết nối đến cùng một RDP server hàng ngày, một logon script sẽ loại bỏ bước thủ công này. Tạo file fix-clipboard.bat với nội dung sau:
@echo off
taskkill /f /im rdpclip.exe >nul 2>&1
start rdpclip.exe
Triển khai theo một trong hai cách:
- Group Policy: User Configuration → Windows Settings → Scripts (Logon/Logoff) → thêm file .bat vào
- Thư mục Startup: Đặt file vào
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup
Sau lần đăng nhập tiếp theo, rdpclip.exe sẽ tự khởi động lại trước khi bạn mở Excel.
Khắc Phục Vĩnh Viễn (Tìm Và Loại Bỏ Tiến Trình Đang Chiếm Clipboard)
Bước 1: Xác định tiến trình đang chiếm clipboard
Đoán mò rất mất thời gian. Dùng đoạn PowerShell này để lấy chính xác tên tiến trình và PID — chạy ngay sau khi lỗi xuất hiện:
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."
}
Kết quả điển hình: Teams 12348 Microsoft Teams — bây giờ bạn biết chính xác cần xử lý gì.
Ngoài ra, Process Explorer từ Sysinternals hiển thị các handle clipboard trong Find → Find Handle or DLL.
Bước 2: Tắt hoặc cấu hình lại ứng dụng gây lỗi
- Teams/Skype: Trong Teams, vào Settings → General → bỏ chọn các tùy chọn liên quan đến clipboard, hoặc tắt tạm thời:
taskkill /f /im Teams.exe - Phần mềm quản lý clipboard: Tạm dừng hoặc thoát ứng dụng khi đang làm việc trong Excel. Ditto, chẳng hạn, có tùy chọn "Pause" trong icon system tray
- Phần mềm diệt virus: Thêm Excel.exe vào danh sách ngoại lệ cho việc quét clipboard — xem tài liệu của nhà cung cấp để biết cài đặt chính xác
- Word/Outlook: Mở panel Clipboard → nhấn Options ở dưới cùng → bỏ chọn "Collect Without Showing Office Clipboard"
Bước 3: Tắt chia sẻ clipboard trong RDP nếu không cần
Không cần copy-paste giữa máy local và remote server? Hãy tắt hoàn toàn chuyển hướng clipboard — loại bỏ xung đột rdpclip.exe ngay từ gốc.
Trước khi kết nối, mở Remote Desktop Connection (mstsc.exe):
- Nhấn Show Options → tab Local Resources
- Trong mục Local devices and resources, nhấn More…
- Bỏ chọn Clipboard
Để lưu cài đặt này vĩnh viễn, lưu cấu hình RDP vào file .rdp và thêm dòng sau:
redirectclipboard:i:0
Mở file .rdp đó thay vì gõ địa chỉ server mỗi lần.
Giải Pháp VBA Cho Lập Trình Viên
Các macro copy ô theo vòng lặp — ví dụ lặp qua 500 hàng và copy từng hàng sang sheet khác — sẽ kích hoạt lỗi này ở hầu hết mỗi vòng lặp. Hai dòng code sau sẽ giải quyết được.
Sub ClearClipboardSafe()
On Error Resume Next
Application.CutCopyMode = False ' Giải phóng chế độ copy của Excel và đường viền nét đứt chạy xung quanh
On Error GoTo 0
End Sub
Gọi ClearClipboardSafe sau mỗi thao tác copy trong vòng lặp. Dòng quan trọng là Application.CutCopyMode = False — nó yêu cầu Excel giải phóng clipboard ngay lập tức thay vì giữ nó mở trong khi đường viền nét đứt vẫn còn hiển thị.
Nếu macro của bạn cần xóa cả Windows clipboard (không chỉ clipboard của Excel), thêm dòng này sau lệnh CutCopyMode:
CreateObject("htmlfile").ParentWindow.ClipboardData.ClearData()
Cách này dùng late binding (không cần thêm references) và hoạt động trên Excel 2016 đến 365.
Kiểm Tra Kết Quả
Sau khi áp dụng giải pháp, thực hiện các kiểm tra sau:
- Chọn một vùng và nhấn Ctrl+C — popup không được xuất hiện
- Copy hơn 10 ô liên tiếp nhanh — lỗi phải biến mất hoàn toàn
- Trong phiên RDP, copy dữ liệu từ Excel và paste vào ứng dụng local (Notepad là được) — chuyển hướng clipboard phải hoạt động im lặng
- Chạy lại script PowerShell kiểm tra chủ sở hữu clipboard — kết quả mong đợi:
No process currently has the clipboard open.
Tóm Tắt
- Phiên RDP: Khởi động lại
rdpclip.exe— giải quyết ~80% trường hợp trong dưới 30 giây - Máy local: Chạy đoạn PowerShell để tìm tiến trình đang chiếm clipboard, sau đó tắt hoặc cấu hình lại nó
- Ẩn lỗi nhanh: Xóa panel Office Clipboard, hoặc bỏ chọn tùy chọn paste trong cài đặt Advanced của Excel
- Macro: Thêm
Application.CutCopyMode = Falsesau mỗi thao tác copy trong vòng lặp

