1. <div id="ekwzd"></div>
      <div id="ekwzd"><ol id="ekwzd"></ol></div><div id="ekwzd"><ol id="ekwzd"></ol></div>
      <div id="ekwzd"><label id="ekwzd"></label></div>
        <em id="ekwzd"><ol id="ekwzd"></ol></em>

              1. <div id="ekwzd"><label id="ekwzd"></label></div>
                <div id="ekwzd"></div>
                1. <em id="ekwzd"></em>
                2. <em id="ekwzd"><label id="ekwzd"><form id="ekwzd"></form></label></em>
                3. 剪貼板是什么(剪貼板Clipboard是什么)

                    剪貼板是什么(剪貼板Clipboard是什么)大家好,我們今日講解"VBA信息獲取與處理"教程中第十一個專題"VBA中剪貼板(Clipboard)的應用"的第一節"剪貼板Clipboard是什么",這個專題是非常有用的知識點,希望大家能掌握利用。

                    大家好,在之前的專題講解中,對于來自網絡數據的抓取,曾經講過一個細節,就是將數據先放到剪貼板中,然后再粘貼到工作表內,大家可以再看一看資料006工作表.XLSM

                    中Sub CopyToClipbox過程的內容,那么什么是剪貼板,利用它有什么好處呢?對于VBA的操作,這個知識點有哪些方便獨到之處呢?我們這個專題就來講解。

                    我們在平時操作文件的時候經常會用到Ctrl+C/X、Ctrl+V的操作,就是把我們需要的內容復制,然后粘貼到我們需要的地方,這種操作非常符合人們感觀上的認識,其實這種動作就是把內容首先放到了剪貼板即專用的內存中,只不過這種操作是在后臺進行,我們沒有看到罷了。

                    Windows的幫助文件中有這樣的敘述:剪貼板是從一個地方復制或移動并打算在其他地方使用的信息的臨時存儲區域。可以選擇文本或圖形,然后使用"剪切"或"復制"命令將所選內容移動到剪貼板,在使用"粘貼"命令將該內容插入到其他地方之前,它會一直存儲在剪貼板中。例如,您可能要復制網站上的一部分文本,然后將其粘貼到電子郵件中。

                    對于VBA而言,MSForms庫包含一個名為DataObject的對象,該對象支持在Windows剪貼板上使用文本字符串。VBA不支持剪貼板上其他非文本值所需的數據類型。若要在代碼中使用數據對象,必須設置對Forms 2.0 Object Library的引用。在VBA中添加引用如下:

                    轉到VBA編輯器中的"工具"菜單,然后選擇"引用"項。在出現的對話框中,向下滾動列表,直到找到適當的庫(常用的引用列在列表的頂部,之后,引用按字母順序列出)。找到代碼所需的引用時,選中引用標題旁邊的復選框,然后單擊"確定"

                    這個對象有什么特點,又是如何工作的呢?

                    1)公開性剪貼板中的數據存放在全局內存中,因此大部分的windows應用程序都可以訪問其中的數據,在遵守相關API函數約定的前提下,應用程序可以自由地打開剪貼板(OpenClipboard),讀取剪貼板內的數據(GetClipboardData),或者清空剪貼板(EmptyClipboard),然后設置剪貼板內的數據(SetClipboardData),最后關閉剪貼板(CloseClipboard);

                    2)獨占性 Windows規定應用程序對剪貼板的訪問是獨占性的,當一個應用程序使用OpenClipboard打開剪貼板之后,其他程序就不可以再訪問剪貼板,直至前一程序使用CloseClipboard關閉剪貼板。通常我們使用剪貼板的時候不會感覺受其他程序的影響,這是因為剪貼板內的數據操作都是在內存中進行的,速度非常快,對于特大塊的數據,應用程序還可以選擇延時處理(Delayed Rendering)機制以保證速度。但是,我們在對剪貼板編程的時候要注意:每次使用完剪貼板之后一定要記得使用CloseClipBoard關閉它;在OpenClipboard和CloseClipboard之間不要放置耗時很長的代碼,以免影響其他程序正常工作。

                    3)規范性設置剪貼板內數據的應用程序窗口被稱為剪貼板數據擁有者(ClipboardOwner),可以通過GetClipboardOwner函數獲得它的句柄。反過來說,如果一個應用程序想向剪貼板中放入數據,需要先成為ClipboardOwner。程序要成為ClipboardOwner需要先將自己的句柄傳給OpenClipboard函數,如果剪貼板中已經有數據存在,還需要先調用EmptyClipboard;

                    4)多元性剪貼板中可以同時存放多種格式的數據,各自放在全局內存的不同位置;剪貼板中的數據有標準格式/預定義格式的,如文本、位圖、Wav聲音……,也有非標準格式/用戶自定義格式,比如word中的域和公式、Excel中的圖表。

                    5)可檢索性對于每種在剪貼板中存放過的格式,Windows都會給它分配一個獨特的長整型編號,通過這個編號可以知道對應的數據格式的名稱(GetClipboardFormatName),或者查詢對應的數據在剪貼板中是否存在(

                    IsClipBoardFormatAvailable),如果存在,還可以通過這個編號找到對應的數據在內存中存放的位置(GetClipboardData)。

                    對于標準格式,這個編號是固定的,可以通過VB6自帶的APIViewer查詢以CF_開頭的常量得到,比如:

                    Public Const CF_TEXT=1

                    Public Const CF_BITMAP=2

                    Public Const CF_METAFILEPICT=3

                    Public Const CF_SYLK=4

                    ……

                    對于非標準格式,這個編號由提供此格式數據的應用程序給此格式定義一個名稱,然后將此名稱傳遞給RegisterClipboardFormat函數,如果此名稱已經存在,函數將返回此名稱對應的編號,如果此名稱不存在,函數將返回一個之前未使用的編號,在系統關機重啟之前,這個名稱和編號可以一直使用下去。

                    6)可監視性有一組特別的窗口可以持續監視剪貼板內的數據變化,這組窗口被稱作剪貼板觀察程序(ClipboardViewer),由它們構成的這個小圈子叫作剪貼板觀察程序鏈ClipBoardViewerChain,每當剪貼板內數據發生變化時,windows將向消息鏈中的第一個窗口發送一個WM_DRAWCLIPBOARD消息,再由它轉發給第二個……直至消息到達消息鏈中的最后一個窗口。同樣,當消息鏈中的成員發生變化時,每個窗口都會收到一個WM_CHANGECBCHAIN消息;通過SetClipboardViewer函數,應用程序可以將自己的窗口句柄告訴windows,從而注冊成為剪貼板觀察程序鏈中的一員;通過ChangeClipboardChain函數,應用程序可以退出剪貼板觀察程序鏈,而不影響它后面的窗口繼續接收相關消息。

                    這講我簡單地介紹了一些剪切板相關的知識,對于大家掌握和利用這個知識點是十分有益的。其實不僅是對于VBA的理解,對于其他的語言也都大體一致。因為我參考的都是權威的論述。

                    從上面的分析我們可以得到下面的結論,剪貼板可用于存儲文本和圖像等數據。由于所有活動進程都共享剪貼板,因此它可用于在這些活動進程之間傳輸數據。使用 Clipboard 對象可輕松訪問剪貼板并從中讀取和向其寫入數據。我們可以利用的操作有:從剪貼板讀取數據;確定存儲在剪貼板中的文件類型;清除剪貼板的數據;將數據寫入剪貼板。

                    本節知識點回向:

                    1 什么是剪貼板?

                    ② 剪貼板的特點是什么?

                    ③ 剪貼板的操作有哪些?

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

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

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

                    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的歷歷往事,不勝感慨,謹以這些文字以紀念,

                    本文地址:

                  (0)
                  上一篇 2021年3月23日 10:55
                  下一篇 2021年3月23日 10:56

                  相關推薦

                  返回頂部

                  1. <div id="ekwzd"></div>
                    <div id="ekwzd"><ol id="ekwzd"></ol></div><div id="ekwzd"><ol id="ekwzd"></ol></div>
                    <div id="ekwzd"><label id="ekwzd"></label></div>
                      <em id="ekwzd"><ol id="ekwzd"></ol></em>

                            1. <div id="ekwzd"><label id="ekwzd"></label></div>
                              <div id="ekwzd"></div>
                              1. <em id="ekwzd"></em>
                              2. <em id="ekwzd"><label id="ekwzd"><form id="ekwzd"></form></label></em>
                              3. 欧美日韩