第一部分:如何給Excel工作簿減肥
除了工作簿本身有宏病毒(關于如何識别宏病毒,本文的結束處有說明)外,有下列的幾個原因可能導緻工作簿異常膨脹
一。工作表中的格式過于複雜(如多種字型,多種顔色,條件格式等等)
我 們都知道,一個工作表有65536*256個單元格,這個非常大的一個範圍。我們在應用一些格式設定時,往往為了友善,直接在整行,或整列,或者在多行和 多列中應用,這樣其實是不妥當的。我相信很少有人會用滿整列,或者整行。大量的沒有用到的單元格被加上了一些格式後,Excel并不總是知道這個單元格是 不需要用的,而往往在計算時會包括這些單元格。另外,格式的多樣性(包括字型,顔色等),勢必是要造成Excel檔案體積變大。1. 用盡量少的格式樣式,如字型和顔色,畢竟Excel的優勢不是在于文書,版面的展示(那是Word,PowerPoint等的強項)
2. 删除“空白”的單元格。找到工作表中最右下角的單元格(請注意:除非你有自信,請不要過分依賴Excel 的"定位"=>"最後一個單元格"所給你的結果),我是說你可以手工找到這個單元格。使用整行、整列删除指令,這樣按Ctrl+End就可以定位到 有資料的最後一個單元格了,删除全部,然後儲存,在實操中,有人按Ctrl+Shift+向下鍵時標明了全面,并填充了公式,導緻整個工作表容量變大,是以這裡提醒各位注意.
二。圖檔或者其他繪圖圖形較多,或者圖檔選擇了不恰當的格式
選擇适當的圖檔格式
在 文檔中引用的圖檔格式一般有三種,BMP、JPG、GIF。BMP格式儲存的圖檔保真度較高,但大小往往是其它兩種格式的幾倍至幾十倍,而照片、掃描圖檔 等用GIF格式儲存則失真非常嚴重,是以建議圖檔先采用JPG格式儲存,然後再引入到文檔中,這種格式的圖檔大小不僅比BMP格式小很多,而且往往也比 GIF的格式小,而保真度與BMP格式則相差無幾。
利用“插入”引入圖檔
插入圖檔有兩種方法,第一種是将圖檔保 存為一個JPG格式的檔案,選擇“插入→圖檔→來自檔案”,打開“插入圖檔”對話框,選中所需插入的圖檔檔案,點選“插入”即可。另一種是用“畫圖”、 “Microsoft照片編輯器”等打開這個JPG檔案,選中并複制,然後在文檔中點選“粘貼”即可插入。強烈建議大家采用第一種方法,雖然兩種方法得到 的圖檔品質是一樣的,但第一種方法所形成的文檔的大小可能會比第二種小幾十倍!有些人怕麻煩,但這效果帶來很大收益,就是令你的表格變小.值得做啊.徹底清除圖形對象:例如我們自己畫的一些圖形,比如你現在不要用它們了,你選擇行或者列範圍删除,清除都是清除不掉了,他們隻是可能縮小了。這個時候,就可以用到本版"流浪的風"提到過的一個方法
1.先找到其中的一個文本框(找不到就自己添加一個)
2.選中這個文本框,按F5--->定位條件--->對象-->确定
3.按Delete清除
4.儲存關閉
5.看看現在檔案有多大,打開看看速度還慢不慢
三。公式和名稱較多或者公式,名稱,資料透視表等所引用的單元格範圍過大,或将公式轉換成數值
已經不用或較長時間用不到的資料,特别是公式連結引用的,可将其轉換為數值形式儲存,避免了大量公式占用表格記憶體空間,這也是導緻運作速度變慢的主要原因,如連結到網絡時儲存可能會顯示路徑過深等不能儲存情況。
標明要轉換的公式區域,按右鍵複制,注意不要移動滑鼠,再按右鍵選擇-選擇性粘貼,在彈出對話框裡選擇數值确定即可。這樣把公式轉換成數值,使表格身材大減.
由 于和第二點類似的原因,我們在定義名稱,編寫公式,指定資料透視表的資料源時往往圖一時友善,而指定了過大的單元格範圍。例如在A列中有包括标題在内的 10個資料(A1:A10),标題為“姓名”,我們現在要定義一個名稱,例如"姓名",很多人會用 插入=〉名稱=〉指定=〉首行,這當然是友善的,但這樣的話“姓名”這個名稱就引用了A2:A65536,而不是實際的A2:A10。你能想象到兩者的差 别嗎?
這時候,有的朋友要說:我這樣做的原因是因為我的資料是在不斷增加的呀,我可不想每次在變動的時候都去改這個名稱。
當然,是對的,誰會願意這樣做呢?
當 我确信我定義的這個名稱所引用的範圍不可能是固定的時候,我采用了一個方法就是“動态命名”。聽起來有點耳熟對嗎?請看這個例子:為簡單起見,我們假設數 據都是連續地在A10後面開始添加,也就是說我們希望當我們添加到A15時,這個"姓名"就如我所願地指向A2:A15,而這一切都是自動完成的。那麼你 可以在"插入"=〉"名稱"=>"定義"對話框中,找到"姓名",然後修改引用位置為=OFFSET($A$2,0,0,COUNTA($A: $A)-1,1),然後點選"添加"。請留步,先不要急着關閉這個對話框。你現在可以将滑鼠放在"引用位置"的這個框裡面,由此來驗證你要的結果。看到了 嗎?工作表中那一閃一閃的區域就表示了目前"姓名"所引用的單元格範圍。
這隻是一個簡單的示範,利用這種技巧,可能讓我們用最經濟的方式得到我們需要的結果。
在公式引用中,在指定資料透視表的資料源時,都可以運用類似的技巧。當然,我不會推薦你寫類似這樣的公式=CountA(OFFSET($A$2,0,0,COUNTA($A: $A)-1,1)),而是推薦你先定義好這個名稱,然後這樣寫公式:=CountA(姓名)
這種效果在數組公式中更明顯,除非你有足夠的耐心和勇氣,請不要在數組公式用引用過大的單元格範圍,特别是那些不必要的單元格。
請注意,以上的檢查應該是針對工作簿中的所有工作表,包括隐藏的
四。VBA代碼,尤其是使用者窗體的影響(VBA偶不熟)
現在很多朋友都已經學會了用VBE來建構自己的工程,這是多麼令人振奮的一件事!但今天我們要讨論的是如何處理VBA工程可能帶來一些副作用以及如何壓縮它?
有很多測試證明,使用者窗體會是增加檔案大小的比較突出的原因之一。而反複地改寫工程中子產品的代碼,也或多或少地會增加檔案的大小(我們可以這樣了解:反複地改寫工程代碼,總是會留下一些痕迹和碎片)
對于這個問題,可以考慮将所有子產品,窗體,都導出為檔案,然後儲存,然後再依次導入。
關于使用者窗體,作為開發者應該考慮的是:是否真的有必要用某個窗體?舉個簡單的例子,如果隻是接收使用者輸入數值,就完全可以用InputBox方法或者屬性,而不需專門用一個窗體。同時,工作表本身可以用來做使用者互動的界面,應該充分利用。
五。外部連結(特别是死連結)的影響
有 的時候,我們的工作簿中可能包含了一些外部引用,這樣我們可以共享其他工作簿的一些資訊。如果你的工作簿中包含外部連結,你可以通過"編輯"=>" 連結"對話框中檢視到。預設情況下,檔案在打開時,總是嘗試去連結源檔案,以重新整理資料。在儲存時,會紀錄連結的變化情況。
當源檔案的位置或者内容發生變化時,就可能産生死連結。
我個人非常不主張用連結方式來實作不同檔案間資料的共享,這既不是最友善的方法,而且在檔案分發過程中會遇到一些問題。我當然知道資料共享是有意義的,但我經常會嘗試用其他的途徑來實作。
六。關于自動儲存選項的考量
選 中這個選項時,每次進行儲存文檔的操作則隻儲存文檔的修改部分,儲存速度較快,但文檔的大小也會增加,即使是對文檔進行删減操作也是如此。目前計算機的速 度較快,是以開啟這項功能所帶來速度的增加毫不明顯,但付出的代價是文檔的大小急劇膨脹,建議不要選中這個選項。試着關閉這個選項,再對文檔稍作修改,然 後儲存,你會驚奇地發現文檔的大小會大幅度縮小!但在執行此操作時要注意:你的電腦是否配有UPS不間斷電源,在不通知情況下斷掉電源可能會造成資料的丢失。是以養成不時按Ctrl+S鍵儲存檔案是很重要,我自己經常這樣做的,也推薦大家這樣。
七。檔案異常退出(或者其他不可預見的原因)造成的工作簿内工作表結構方面的損壞
有時候,由于一些不可預見的原因(例如停電),Excel被迫異常退出。雖然目前沒有專門的工具可以檢測這種情況對工作簿内部可能造成的損壞程度,但是有理由相信多少是有影響的。
如果你的檔案中不存在前面提到的幾個問題,同時你還是确信檔案體積不正常,你可以嘗試如下的方法
新 建一個工作簿,把現有檔案中的工作表一一剪切到新的工作簿中。請注意這裡用的是“剪切”方法,不是“移動或複制工作表”,也不是“複制”。沒錯,就是先選 中工作表中的内容,然後“剪切”,光标移動到目标工作表,然後“粘貼”。這樣做唯一不足的地方就是,目标工作表的行和列格式可能要稍微調整一下。
八。針對公司部分表格較大的表,可以實行工作簿分離
對于工作表容量較大,如在10MB以上的或運作速度較慢時,可以采用此方法。但由于分離出來的工作簿變成工作表了,數量将不斷大,是以必須規範歸好檔,建 議用檔案夾歸類放好。你一個表3個工作簿30MB,分離出來變成三個工作表,假設每個工作簿是10MB的話,那分離出來的工作表就是10MB了,10MB 跟30MB運作起來的差别大家可以試試.在公司我是要求他們盡量将大表分離出來.
________________________________________
第二部分:如何給Excel加速
可能影響Excel的運作速度的幾個方面
1。 裝置的配置是否合理?特别是Office 2003,功能的确是很強大了,但相應的對硬體的要求也提高了。一般使用者都用Windows Xp系統,然後裝Office 2003 ,當然還有其他的軟體了,根據自己的計算機的配置情況,你也可能選擇隻安裝部分(而不一定是全部)Office元件和工具。
2。加載宏。 Excel内置了幾個加載宏程式,可以幫助我們實作一些進階功能。另外,我們自己也可以編寫,或者在網上也可以找到更多的各式各樣的加載宏程式。在使用加 載宏時我可以給出的建議有:首先一定要确認加載宏的來源是否正當?下載下傳後,安裝前,強烈推薦要先殺毒。其次,要用的時候再加載它,而不主張一直把所有的加 載宏都加載上。現在一般防毒軟體都鉗入到OFFICE裡
3。自動重算,自動儲存選項的考量。這兩個選項在一定程度上給我們的工作帶來了便 利。但在有些時候(例如是公式比較多的時候),特别是自動重算,可能導緻運作速度變慢。前面提到:自動儲存選項也是可能導緻檔案增大的一個因素。有選擇性 地在操作一些檔案時關閉這兩個選項,可能會對運作速度有幫助。(不過注意在沒有設定重算後,資料的變化)
4。疊代計算選項的考量。出于某 種特殊的需求,我們可能會允許工作簿進行疊代計算,也就是循環引用(這種有目的的循環引用可以被用到解聯立方程等一些特殊的場合)。但是這種循環引用會導 緻工作表頻繁地被計算,當工作表任何地方發生變化時,就被重新計算一次。是以,這一點也是影響Excel速度的原因之一。建議不要勾上這個選項。
5。檔案不正常(主要是本文第一部分所提到的一些情況)。這一項的解決不再贅述。
6。 不恰當地使用了其他一些外部工具可能導緻的問題。例如一些測試版的軟體,就好比目前的VSTO 2005 BETA2 ,這裡面有一些針對Excel進行程式設計的工具。有的朋友(請注意:隻是可能)就會發現,安裝了這個工具後,或者即使後來解除安裝了這個工具後,Excel在讀 檔案,特别是内部有宏的檔案時非常奇怪地“吃”記憶體,具體地說就是Excel會瘋狂地占用記憶體,以緻根本就無法正常工作。對于這種情況,有一個比較簡便的 方法就是使用:幫助=〉檢測與修複 ,有兩個選項:修複時恢複快捷方式;放棄自定義設定并恢複預設設定。如果兩個選項都選上了,或者至少第二個選項選上了的話,執行修複完後一般都能解決這個 問題。請注意:在執行這個操作之前,請确定你已經清楚這樣操作可能導緻的一些問題(例如Outlook的個人資料檔案可能需要重新指定:檔案不會丢失,但 修複完重新開Outlook前,請到控制台=〉郵件 對話框中指定你的個人資料檔案)。強烈建議你要先閱讀相應的幫助文檔。
________________________________________
第三部分:如何識别宏病毒?
在 VBE(Visual Basic編輯器)中,激活工程資料總管,并定位到你要檢查的工作簿。 檢查工作簿中所有子產品(包括ThisWorkBook子產品)中的代碼,檢視是否有你不熟悉的VBA代碼。病毒代碼往往格式混亂并且含有大量奇怪的變量名 稱。另一個選擇是使用市售的查毒軟體。
為保證安全,建議将OFFICE 的宏安全性級别設定為中級後者以上(請注意:如果設定為進階的話,你将不會收到任何的通知,Excel自動禁止所有宏運作)
________________________________________
第四部分:結語
1。 正如我不止一次在新聞討論區中提到的一樣,Excel并不是設計用來存儲資料的。是以不推薦在Excel中存放太多的資料。雖然Excel工作簿所允許的工作 表數量并沒有什麼具體的限制(Excel2003),但我推薦的工作表數量不要超過10個。即使前三部分提到的一些問題都解決好了,而資料量如此之大的 話,速度還肯定是慢的。
2。在你決定按照以上提到的一些方法進行操作之前,建議你保留一份檔案備份到安全的地方。