剪貼板中的數據格式(Clipboard Formats)

2021-02-15 VBA語言專家

大家好,我們今日講解「VBA信息獲取與處理」教程中第十二個專題「VBA中剪貼板(Clipboard)的應用」的第四節「剪貼板中的數據格式(Clipboard Formats)」,這個專題是非常有用的知識點,希望大家能掌握利用。

第四節  剪貼板中的數據格式(Clipboard Formats)

在前面的講解中我們已經了解到使用MSForms.DataObject可以很輕鬆地提取剪貼板中的文本數據,但DataObject目前只支持文本操作,所以它的GetFromClipboard方法只能用於讀取剪貼板內文本。而通過剪貼板API函數,我們可以使用剪貼板內全部格式的數據,同樣是文本數據我們也可以利用GetClipboardData(CF_TEXT)來獲取。那麼在剪貼板中處理以文本格式存在的內存對象外,還有哪些格式呢?我們這講就來討論一下。

1  數據格式的介紹

所謂數據格式(data format)是描述數據保存在文件或記錄中的規則。可以是字符形式的文本格式,或二進位數據格式的壓縮格式。字符形式的文本格式佔用的存貯空間多但透明度高,二進位數形式的壓縮格式佔用的存貯空間少但缺少透明度。

建立數據格式是為了便於更好地儲存、分析、交換和顯示數據給用戶。我們知道,在計算機中,所有數據都是以0或1構成的位構成的,在大多數的程式語言中,數據的最小單位是字節,它由8個位構成,可以表示0-255之間256個數值,要用這256個數值表示各種各樣的信息,比如文字、圖形、音頻、視頻等,就需要給代表每種信息的一串字節規定一個固定的結構和擺放規則,否則如果只是把所有數據羅列到一起,就會帶來解析上的困難。如果這種結構和規則被普遍接受,它就會成為一種通用的數據格式。

通常每種數據格式都會包含一個簡單的易於識別的字節特徵,比如我們的磁碟中的各種文件,就有文本格式、位圖格式、超文本格式等成百上千種格式,假如我們用UltraEdit之類十六進位編輯器打開一個沒有後綴名的文件,如果發現它的前四個字節是47 49 46 38("GIF8"),它很有可能是一個gif格式圖片,假如我們對gif格式的規定有全面的了解,那不但可以100%判斷它是或不是一個有效的gif格式圖片,還能把它所代表的圖形顯示到屏幕上。對於用戶來說,對不同格式的文件可以使用相應的程序打開,對於程序來說,對不同格式的數據可以使用相應的解析方式加以解讀,從而挖掘其中攜帶的信息。

2  剪貼板中的數據格式

剪貼板裡可以同時存放多種格式的數據,我們將他們統稱為剪貼板格式(Clipboard Formats)。為了區別各種格式,windows給每種剪貼板格式都分配了一個特有的長整型數字,我們稱作剪貼板格式編號(Clipboard Format Number),同時,為了便於人們記憶和使用,除了少數幾個通用的標準格式,大部分數據格式還對應一個英文名稱,叫作剪貼板格式名稱(Clipboard Format Name),這個名稱是大小寫敏感的,即CSV和Csv在剪貼板中代表兩種不同的格式,它們的剪貼板格式編號也不會相同。剪貼板格式的編號和名稱是由Windows系統分配和管理的,對於常用的格式,windows對它們的編號進行了預定義,這些格式被稱為標準格式或預定義格式(Standard/Predefined Clipboard Formats)。那麼在剪切板中都有哪些數據格式呢?我這裡列出一下常用的格式:

1)   Const CF_TEXT = 1       文本格式,以chr(0)作為字符串結束標誌      

2) Const CF_BITMAP = 2   Bitmap對象  

3) Const CF_METAFILEPICT = 3   Metafile Picture格式  

4) Const CF_SYLK = 4   微軟符號連接格式(Microsoft Symbolic Link Format)  

5)Const CF_DIF = 5       Software Arts' Data Interchange Format.      

6) Const CF_TIFF = 6   標籤圖像文件格式(TIFF)  

7) Const CF_OEMTEXT = 7   包含OEM字符集的文本格式  

8) Const CF_DIB =8   設備無關位圖(DIB)格式,前面是一個BITMAPINFO結構,後面是圖像像素位  

9) Const CF_PALETTE = 9   調色板對象格式,當程序向剪貼板中放入一幅使用調色板的位圖時,它需要同時將調色板也放入剪貼板  

10) Const CF_PENDATA =10   手寫筆數據  

11) Const CF_RIFF =11   比標準CF_WAVE所能代表的音頻格式更加複雜的音頻格式   12) Const CF_WAVE = 12   標準音頻格式(如11kHz或22kHz脈衝編碼調製)的數據   13) Const CF_UNICODETEXT =13  Unicode文本格式  

14) Const CF_ENHMETAFILE =14  增強圖元文件格式  

15) Const CF_HDROP = 15   文件名列表  

16) Const CF_LOCALE = 16   與剪貼板內文本相關的區域選項的ID  

17)Const CF_MAX =17

如果應用程式需要向剪貼板中放入的數據不能以上述格式表示或者不能轉化為上述格式時,它可以使用註冊剪貼板格式(Registered Clipboard Formats),也就是說,它可以自行為這個數據格式定義一個名稱,然後使用RegisterClipboardFormat函數註冊這個名稱,如果註冊成功,它將得到這個新建的剪貼板格式對應的編號。

3  判斷剪貼板中的數據格式的函數IsClipboardFormatAvailable

如果一個應用程式只對剪貼板內格式名稱為TEXT的數據感興趣,並且它已經獲得了TEXT剪貼板格式的編號,1,那判斷它自己是否可以使用粘貼命令的最簡單的辦法是使用IsClipboardFormatAvailable(1),然後根據返回值確定剪貼板內是否包含TEXT格式數據,這個函數定義如下:

Declare Function IsClipboardFormatAvailable Lib "user32" (ByValwFormat As Long) As Long

作用:   判斷剪貼板內是否存在指定格式的數據

參數:   wFormat標準剪貼板格式或註冊剪貼板格式的編號

返回值:如果剪貼板中存在相應格式的數據,則返回一個非0值否則返回0

4  剪貼板中的所有數據格式的提取

使用EnumClipBoardFormats函數獲取剪貼板內所有可用格式的編號,然後使用GetClipboardFormatName函數取得該編號對應的格式名稱。

  語法及聲明:Declare Function EnumClipboardFormats Lib "user32" (ByValwFormat As Long) As Long

意義:這個函數可以列舉出當前剪貼板內所有可用的數據格式

參數:wFormat代表剪貼板內已知可用的標準剪貼板格式或註冊剪貼板格式的編號

在列舉過程最開始,向函數傳入0值,函數將返回第一個可用的剪貼板格式編號,將返回值傳給下一次函數調用,可以得到下一個可用的剪貼板格式編號。

如果調用成功,則返回wFormat之後第一個可用的剪貼板格式編號,如果調用失敗,則返回0。

這個函數需要事先使用OpenClipboard成功打開剪貼板。這個函數返回的剪貼板格式的順序與放入剪貼板數據時的順序一樣。

好了,這講就講到這裡,關於剪貼板在VBA中的操作,我們至少關注文本的內容就好,其他的內容大家可以參考必要的資料。

本節知識點回向:

①  剪貼板的數據格式有哪些?

②  如何得到剪貼板的數據格式參數?

  積木編程的思路內涵:

在我的系列書籍中一直在強調「搭積木」的編程思路,這也是學習利用VBA的主要方法,特別是職場人員,更是要採用這種方案。其主要的內涵:

1  代碼不要自己全部的錄入。你要做的是把積木放在合適的位置然後去修正代碼,一定要拷貝,從你的積木庫中去拷貝,然後修正代碼,把時間利用到高效的思考上。

2  建立自己的「積木庫」。平時在學習過程中,把自己認為有用的代碼放在一起,多積累,在用到的時候,可以隨時拿來。你的積木庫資料越多,你做程序的思路就會越廣。

VBA的應用界定及學習教程:

VBA是利用Office實現個人小型辦公自動化的有效手段(工具)。這是我對VBA的應用界定。在取代OFFICE新的辦公軟體沒有到來之前,誰能在數據處理方面做到極致,誰就是王者。其中登峰至極的技能非VBA莫屬!

我記得20年前自己初學VBA時,那時的資料甚少,只能看源碼自己琢磨,真的很難。20年過去了,為了不讓學習VBA的朋友重複我之前的經歷,我根據自己多年VBA實際利用經驗,推出了六部VBA專門教程:

第一套:VBA代碼解決方案是VBA中各個知識點的講解,教程共147講,覆蓋絕大多數的VBA知識點,提供的程序文件更是一座不可多得的代碼寶庫,是初學及中級人員必備教程;目前這套教程提供的版本是修訂第二版,程序文件通過32位和64位兩種OFFICE系統測試。

第二套:VBA資料庫解決方案資料庫是數據處理的專業利器,教程中詳細介紹了利用ADO連接ACCDB和EXCEL的方法和實例操作,適合中級人員的學習。目前這套教程提供的是修訂第一版教程,程序文件通過32位和64位兩種OFFICE系統測試。

第三套:VBA數組與字典解決方案   數組和字典是VBA的精華,字典是VBA代碼水平提高的有效手段,值得深入的學習,是初級及中級人員代碼精進的手段。目前這套教程提供的版本是修訂第一版,程序文件通過32位和64位兩種OFFICE系統測試。

第四套:VBA代碼解決方案之視頻是專門面向初學者的視頻講解,可以快速入門,更快的掌握這門技能。這套教程是第一套教程(修訂一版)的視頻講解,聽元音更易接受。這套教程還會額外提供通過32位和64位兩種OFFICE系統測試的程序文件。

第五套:VBA中類的解讀和利用 這是一部高級教程,講解類的虛無與肉身的度化,類的利用雖然較少,但仔細的學習可以促進自己VBA理論的提高。這套教程的領會主要是讀者的領悟了,領悟一種佛學的哲理。

第六套教程:《VBA信息獲取與處理》,這是一部高級教程,涉及範圍更廣,實用性更強,面向中高級人員。教程共二十個專題,包括:跨應用程式信息獲得、隨機信息的利用、電子郵件的發送、VBA網際網路數據抓取、VBA延時操作,剪切板應用、Split函數擴展、工作表信息與其他應用交互,FSO對象的利用、工作表及文件夾信息的獲取、圖形信息的獲取以及定製工作表信息函數等等內容。

上述教程的學習順序:1→3→2→6→5或者4→3→2→6→5。提供的程序文件更是一座巨大的代碼庫,供讀者使用,如需要可以WeChat: NZ9668

學習VBA是個過程,也需要經歷一種枯燥的感覺

「眾鳥高飛盡,孤雲獨去閒。相看兩不厭,只有敬亭山」。學習的過程也是修心的過程,修一個平靜的心。在代碼的世界中,心平靜了,心情好了,身體自然而然就好。心靜則正,內心裡沒有那麼多邪知邪見,也就沒有那麼多妄想。利人就是利己。我的教程助力給正在努力的朋友。

「水善利萬物而不爭」,綿綿密密,微則無聲,巨則洶湧。學習亦如此,知道什麼是自己所需要的,不要蜷縮在一小塊自認為天堂的世界裡,待到暮年時再去做自欺欺人的言論。要努力提高自己,用一顆充滿生機的心靈,把握現在,這才是進取。越是有意義的事情,困難會越多。願力決定始終,智慧決定成敗。不管遇到什麼,都是風景。看淡紛爭,看輕得失。學習時微而無聲,利用時則巨則洶湧。「路漫漫其修遠兮,吾將上下而求索」

每一分收穫都是成長的記錄,怎無憑,正是這種執著,成就了朝霞的燦爛。最後將一闕詞送給致力於VBA學習的朋友,讓大家感受一下學習過程的枯燥與執著:

浮雲掠過,暗語無聲,

唯有清風,驚了夢中啼鶯。

望星,疏移北鬥,

奈將往事雁同行。

阡陌人,昏燈明暗,

忍顧長亭。

多少VBA人,

暗夜中,悄聲尋夢,盼卻天明。

怎無憑!

分享我多年工作實際經驗的成果,隨喜這些有用的東西,給確實需要利用VBA的同路人。回向學習利用VBA的歷歷往事,不勝感慨,謹以這些文字以紀念,

分享成果,隨喜正能量

加微信NZ9668可獲得詳細資料信息

_____________________________ 

 

更多關聯閱讀

  



相關焦點

  • 剪貼板Clipboard是什麼
    找到代碼所需的引用時,選中引用標題旁邊的複選框,然後單擊「確定」2  剪貼板Clipboard對象的特點1)公開性剪貼板中的數據存放在全局內存中,因此大部分的windows應用程式都可以訪問其中的數據,在遵守相關API函數約定的前提下,應用程式可以自由地打開剪貼板(OpenClipboard),讀取剪貼板內的數據(GetClipboardData),或者清空剪貼板(EmptyClipboard),然後設置剪貼板內的數據
  • 提取剪貼板中所有數據格式到工作表
    大家好,我們今日講解&34;教程中第十二個專題&34;的第五節&34;,這個專題是非常有用的知識點,希望大家能掌握利用。第五節 提取剪貼板中所有數據格式到工作表在上面的幾節中主要講了理論上的一些必要的知識點,這講就利用這些知識點完成一些必要的操作,講解如何把剪貼板上的數據格式分析提取到工作表之中。
  • 利用API函數完成剪貼板Clipboard的操作
    第三節  利用API函數完成剪貼板Clipboard的操作在上一講中,我們對剪貼板中的文本簡單操作進行了了解,是利用MSForms.DataObject對象來完成的,這種對象有前期綁定和後期綁定兩種方式都可以實現目標。今天我們講解利用API函數來完成對剪貼板的操作。這種方式的操作可以設計到各個方面。
  • 拒絕反覆輸入的煩惱,剪貼板也可以這樣強大
    目前不論是mac,還是windows的自帶剪貼板,都是沒有歷史記錄的。多次重複的複製黏貼不僅僅是沒有效率,而且容易讓我們產生疲勞,出現失誤。現在手機上,尤其是安卓手機,因為開源性質,已經有開發者做了不錯的軟體,去解決這一痛點,比如錘子的剪貼板歷史記錄,又比如方片收集等等。電腦端呢,針對不同的複製粘貼的場景,又有哪些軟體在解決這一問題呢。
  • excel自定義格式數據與真實數據的轉換
    excel自定義格式數據與真實數據的轉換工廠對於產品會有編號的前綴需求例如:「ZL2020」,但是在統計產品數量方面需求的時候,又需要自定義格式的顯示結果轉化為真實數據,解決方法:就是使用剪貼板強大的粘貼功能實現。
  • 蘋果的剪貼板那麼好用,你卻不知道?| 有輕功
    最近聽說 Windows 10 要推出雲端同步剪貼板的功能,不知道大家是否有利用過 iOS 與 Mac 從 2016 年底開始內建的「通用剪貼板」功能呢
  • Excel剪貼板的強悍功能!
    實際工作中,它是最容易被我們忽略的一個功能。因為它是那麼普通,從名稱我們就可以知道它是用來複製粘貼的。除了儲存複製後的數據,再看不出它有什麼其他應用。今天就通過幾個實用例子讓大家見識一下這個神奇的功能。「剪貼板」躲在Excel中的一個安靜的角落,只有輕擊「開始」選項卡左下角的一個小箭頭,才能喊醒它。實際工作中,它是最容易被我們忽略的一個命令。
  • 自定義格式,Excel中的黑科技
    可計算單位Excel中帶單位的數值是不可求和的,利用自定義格式給數值批量添加單位,同時可進行求和計算。自定義類型直接在通用格式後面添加單位即可,或者輸入數字0+單位也可以(如「0噸」),這裡的數字「0」相當於數字佔位符。
  • ...TikTok 等 53 款應用現形後,網友再曝領英頻繁訪問 iOS 剪貼板...
    雷鋒網(公眾號:雷鋒網)注意到,一位領英副總裁「Erran Berger」回應稱:經過對代碼路徑的跟蹤,我們發現這種情況只是在對剪貼板內容和文本框中當前鍵入的內容進行等值校驗近日,一位領英發言人向外媒 ZDNet 表示,用戶發現的上述情況是一個 Bug,針對這一 Bug 的修復程序正在開發中,將會儘快向用戶提供。
  • Excel VBA Paste方法粘貼剪貼板數據到工作表
    用Paste方法把剪貼板上數據粘貼到工作表,本例我們用Copy方法先複製到剪貼板,然後再粘貼到工作表。>#006 End Sub 運行結果如所示:Paste方法粘貼剪貼板數據到工作表 代碼說明:把Range("A1").CurrentRegion獲取A1單元格區域[A1:E5]數據複製到粘貼板,然後把粘貼板上的數據粘貼到B7位置。
  • Windows 剪貼板管理軟體 Ditto:改變剪貼習慣,極大提升效率
    主頁面Ditto在粘貼文字時默認是帶格式粘貼,但它也提供了非常豐富的方式和格式,比如以傳聞本格式粘貼、各種大寫轉換、添加或移除換行符、添加時間等,特別是添加或移除換行符這個功能,在複製PDF文本時非常有用,Ditto甚至還支持亂序粘貼,即將此段文本打亂後粘貼。
  • Windows剪貼板管理軟體Ditto:改變剪貼習慣,極大提升效率
    此外Ditto支持多種格式的數據,包括富文本、圖片和文件路徑,可以自定義添加或刪除。主頁面分組我們可以查看相關的統計數據,也可以自行決定是否移除所有剪切項,以及自定義保存項目的最大數量和過期日期,還能更改資料庫的路徑。
  • 重磅|如何批量提取Word中的參考文獻至Zotero?
    如下圖所示,「3 references extracted」顯示成功提取了3篇文獻,並識別出了參考文獻的排版格式為journal-of-micromechanics-and-microengineering,參考文獻的輸出代碼也給出來了(可以修改輸出格式)。
  • 深入淺出理解EdgeBoard中NHWC數據格式
    在深度學習中,為了提升數據傳輸帶寬和計算性能,經常會使用NCHW、NHWC和CHWN數據格式,它們代表Image或Feature Map等的邏輯數據格式(可以簡單理解為數據在內存中的存放順序)。本文以百度的AI端上推理設備EdgeBoard為原型,介紹EdgeBoard選擇NHWC數據格式的技術考量。
  • 重溫ChIP-Seq相關的數據格式
    豆豆寫於2020.12.01重新看了下哈佛之前的ChIP-Seq課程,感覺其中介紹的比較系統,數據格式部分值得拿出來重新看一下官方資料在:https://hbctraining.github.io/Intro-to-ChIPseq/lectures/Fileformats.pdf首先是NGS分析的大體流程
  • 初識flexsim之flexsim中鍵盤交互
    Ctrl + F – 在打開視圖中查找文本.Ctrl + H – 在打開視圖中查找和替換連接.Ctrl + C – 把被選中的實體複製到剪貼板.Ctrl + X –把被選中的實體剪切到剪貼板.Ctrl + V – 將實體粘貼到剪貼板.Ctrl + Tab – 切換到窗口中下一個選項卡.Ctrl + Shift + Tab –切換到窗口中的前一個選項卡.Ctrl + L – 按照 5%的比例放大實體。
  • Win10系統中,如此強大的剪貼板功能,你知道嗎 - 泡泡網
    最近,微軟在Windows 10 1809版本中,更新了剪貼板功能的相關內容。這個功能在之前只能用於記錄最新的內容,而且僅支持PC端。很多小夥伴使用起來非常不方便。目前,最新的1809版本已經對這一功能進行了重大更新,現在可以粘貼存儲在剪貼板中的任何內容,即使不是最新內容,一樣可以使用。下面小編給大家整理了Windows10系統中,關於剪貼板功能的一些小技巧。
  • Excel技巧—開始菜單之剪貼板
    點讚再看,養成習慣一寸光陰一寸金,寸金難買寸光陰今天我們主要學習的是「第一區塊-剪貼板」中的「剪切板」。「剪貼板」主要就是將我們從Excel中或其他程序中複製出來的內容,臨時存儲的地方,最多可以存放24條數據。「剪貼板」主要有兩大特性:①、所見即所得:剪貼板中的內容就是單元格中顯示的內容,也就是我們看到的內容。②、剪貼板中的內容可多次操作。
  • word粘貼技巧:剪貼板在複製中的應用
    編按:剪貼板是Word中非常強大而且實用的一個功能,可是許多新手小夥伴們甚至都不知道它,所以,今天這篇文章將給大家介紹一下剪貼板的用途!03、剪貼板中各按鈕的作用當複製內容時,剪貼板中各個按鈕都將被激活,它們分別是全部粘貼、全部清空和選項3個按鈕,其作用如下:1.