iT邦幫忙

1

excel 如何利用寫入VBA 來做到一鍵執行 「清空剪貼簿」?

  • 分享至 

  • xImage

excel 如何利用寫入VBA 來做到一鍵執行 「清空剪貼簿」?
電腦開太久沒有重新開機後,在電腦的剪貼簿裡會堆積出很多用不到的資料,如何利用EXCEL寫入VBA 來做到一鍵執行 「清空剪貼簿」?
請問這要怎麼寫呢?
https://ithelp.ithome.com.tw/upload/images/20241029/201496748j2g34b8y7.jpg

froce iT邦大師 1 級 ‧ 2024-10-29 09:55:52 檢舉
說句比較直的,加條ram比你搞這些實際多了。
阿摔 iT邦新手 3 級 ‧ 2024-10-29 10:05:37 檢舉
https://answers.microsoft.com/en-us/msoffice/forum/all/excel-vba-clear-clipboard/a76f712a-097f-47bb-896f-6cd275429da4
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

2
尼克
iT邦大師 1 級 ‧ 2024-10-29 09:50:00
在 Excel 的 VBA 中,雖然沒有直接的命令來清空剪貼簿,但可以透過創建一個「無」的 `DataObject` 或使用 `Application.CutCopyMode = False` 來達成這個效果。以下是使用 VBA 來清空剪貼簿的一個簡單範例:

### 方法一:使用 `Application.CutCopyMode`

這是一種快速、簡單的方式來取消剪貼模式,但不會完全清空剪貼簿的內容:

```vba
Sub 清空剪貼簿()
    Application.CutCopyMode = False
End Sub

方法二:使用 DataObject 清空剪貼簿

這種方法會完全清空系統的剪貼簿。需要引用 Microsoft Forms 2.0 Object Library:

  1. 開啟 VBA 編輯器(按 Alt + F11)。
  2. 在「工具」>「參考」中勾選 Microsoft Forms 2.0 Object Library
  3. 然後,將以下程式碼貼上至模組中:
Sub 清空剪貼簿()
    Dim objData As New MSForms.DataObject
    objData.SetText "" ' 將剪貼簿設為空字串
    objData.PutInClipboard ' 將空字串放入剪貼簿
End Sub

方法三:直接使用 Windows API 清空剪貼簿

這是一個更進階的方式,透過 Windows API 可以直接清空剪貼簿:

#If VBA7 Then
    Private Declare PtrSafe Function OpenClipboard Lib "user32" (ByVal hwnd As LongPtr) As Long
    Private Declare PtrSafe Function EmptyClipboard Lib "user32" () As Long
    Private Declare PtrSafe Function CloseClipboard Lib "user32" () As Long
#Else
    Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function EmptyClipboard Lib "user32" () As Long
    Private Declare Function CloseClipboard Lib "user32" () As Long
#End If

Sub 清空剪貼簿()
    OpenClipboard 0
    EmptyClipboard
    CloseClipboard
End Sub

使用方式

將以上任一種程式碼貼入 VBA 編輯器中,並可在 Excel 裡透過快捷鍵或按鈕設置來一鍵執行此宏,即可清空剪貼簿。

資料來源chatgpt

我要發表回答

立即登入回答