嗨,Scripting Guy!

嗨,Scripting Guy!

歡迎使用 TechNet 專欄,Microsoft Scripting Guys 會在此為您解答有關系統管理指令碼的常見問題。您有關於系統管理指令碼方面的問題嗎?請將電子郵件傳送到 scripter@microsoft.com。我們無法保證能夠逐一回答每個問題,不過我們會盡力而為。

還有,別忘了瞧瞧全新經過改良的嗨,Scripting Guy!過往文件

今天的問題:如何刪除試算表的資料,同時保有所有的格式?


如何刪除試算表的資料,同時保有所有的格式?

嗨,Scripting Guy!我要如何刪除試算表的資料,同時保有所有格式?

-- TB

TB,您好。從您的信件看來,您好像是有個指令碼會定期以最新的值更換試算表內的資料。而試算表已經預先經過格式化,所以您想要刪除所有的舊值 (以留出空間給新值),但是不要刪除任何格式。這樣就只要插入新值,而不用重做那些花俏的格式了。

希望您的試算表看起來不是完全像這樣,但目前我們會假裝您的試算表具有跟此處顯示相同的漂亮格式:

Microsoft Excel


那要怎麼刪除資料,卻留下這些…有趣…的格式?當然沒問題:

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWorkbook = objExcel.Workbooks.Open("C:\Scripts\Test.xls")
Set objWorksheet = objWorkbook.Worksheets(1)
objWorksheet.UsedRange.ClearContents

這個簡單的指令碼開始會建立一個 Excel.Application 物件的執行個體,然後將 Visible 屬性設為 True (將 Visible 設為 True 只是為了能夠看到螢幕上發生的變化)。接下來使用這兩行程式碼來開啟 C:\Scripts\Test.xls 檔案,然後建立 Sheet1 的物件參考 (也就是檔案中第一個工作表):

Set objWorkbook = objExcel.Workbooks.Open("C:\Scripts\Test.xls")
Set objWorksheet = objWorkbook.Worksheets(1)

如要刪除這些值而不要影響到格式只需要一行程式碼:

objWorksheet.UsedRange.ClearContents

這邊做的只是使用 UsedRange (它代表所有當中有包含資料的儲存格) 來呼叫 ClearContents 方法。您可能已經猜到,ClearContents 會刪除資料,但留下格式。執行指令碼時,最後會得到一個看起來像這樣的試算表:

Microsoft Excel


看也知道,這不是我們見過最令人印象深刻的試算表。可是看一下將資料加入儲存格時會發生什麼事:

Microsoft Excel


如您所見,所有的舊格式都保留了下來。我們只需要加入新的資料,而試算表還是跟以前一樣漂亮。就像 Martha Stewart (美國生活大師) 會說的,那是件好事。

好啦,如果她看到我們格式化這份試算表的樣子,可能就不會那樣說了。反正您知道我們的意思就好了。

對了,如果您對 Microsoft Office Scripting 有興趣,請務必參閱 Office Space 專欄,它每週二與四都會刊載於 Scripting Center (Scripting 中心)。


如需詳細資訊

查看嗨,Scripting Guy!- 過往文件

 

回到頁首 回到頁首