最近有個項目是將一個excel壓縮之后發給客戶,但是由於excel數據過大,即使壓縮之后仍然接近5M,因為是大批量發送數據,所以非常慢.急需要將EXCEL數據壓縮. 后來我想到一個辦法,就excel數據公式去掉,只保留數值,發現文件小好多. excel 操作去掉數據鏈接如圖所示.
然后我在網上搜索了好多方法,但是沒有去掉 這個鏈接的做法, 后來先用excel 錄制宏的方法, 最后找到用BreakLink方法來處理. 然后又搜索到VBA的此方法詳解. 如下
將鏈接到其他 Microsoft Excel 源或 OLE 源的公式轉換為值。
expression.BreakLink(Name, Type)
expression 必需。該表達式返回“應用於”列表中的對象之一。
PictureFile String 類型,必需。鏈接的名稱。
Type XILinkType 類型,必需。鏈接的類型。
XlLinkType 可為以下 XlLinkType 常量之一。 |
xlLinkTypeExcelLinks 對 Microsoft Excel 源的鏈接。 |
xlLinkTypeOLELinks 對 OLE 源的鏈接。 |
VBA 的方法如下:
Sub DealBreakLink()
Dim astrLinks As Variant
' Define variable as an Excel link type.
astrLinks = ActiveWorkbook.LinkSources(Type:=xlLinkTypeExcelLinks)
' Break the first link in the active workbook.
ActiveWorkbook.BreakLink _
Name:=astrLinks(1), _
Type:=xlLinkTypeExcelLinks
End Sub
下一步就是轉換成VBS的寫法. 經過苦苦搜尋,終於找到了VBS 有類似的方法 BreakLink(Name,Type)
問題來了,這個type我該輸入什么呢? 然后又經過苦苦搜尋(發現現在很難找到比較全面的參考手冊)終於找到Type該輸入的類型了.................
XlLinkType
Constant Value
xlLinkTypeExcelLinks 1
xlLinkTypeOLELinks 2
objExcel.Workbooks.Open strSearchPath
Set objWorkbook = objExcel.ActiveWorkbook
For Each LinkSource In objWorkbook.LinkSources
objWorkbook.BreakLink LinkSource,1 '此處 LinkSourses 為鏈接到外部excel的地址; 1即為要處理斷開鏈接的類型 即為EXCEL 數據源
Next
用了將近一天的時間搜尋資料,至此終於運行成功了. 因為我在搜索資料的時候,沒有見網上處理過此類型的例子.記錄下來供后來者參考.大家記住紅色部分是關鍵就可以了.