標題:
定義名稱 Print_Area 無法用Marco刪除
[打印本頁]
作者:
MRSA
時間:
2010-11-23 20:44
標題:
定義名稱 Print_Area 無法用Marco刪除
小弟有一檔案是從Excel 97 一直使用到Excel 2003.
這檔案內含有多個有效及無效的定義名稱 (Name)
目前作業系統及文書處理系統是Window 7及Excel 2007
今日我以Excel 2007建立一個Marco要將舊版本的Excel檔內的所有定義名稱都刪除. 語法如下:
Sub Clearnames()
Dim nas As Name
For Each nas In ActiveWorkBook.Names
nas.Delete
Next
End Sub
結果,小弟發現,有一個屬於Workbook的定義名稱,名為Print_Area, 還留在檔案裡,而且只能手動刪除.
這是怎麼回事? 我的語法應該沒錯吧.
是版本問題嗎?還是要用其它方式刪除.
我查詢過許多資料, 所使用的語法都與我所列的相同或相似. 而我套用別人的語法後,問題仍在.
懇請大家幫忙處理. 謝謝.
(檔案有上千個,我可沒時間一個一個開檔案手動刪除)
作者:
oobird
時間:
2010-11-23 21:33
Sub Clearnames()
On Error Resume Next
For Each sh In ActiveWorkbook.Sheets
sh.PageSetup.PrintArea = ""
Next
End Sub
清除列印範圍
作者:
HUNGCHILIN
時間:
2010-11-23 22:37
我刪了好幾年是可以
用這種試試看
ActiveWorkbook.Names(sht).Delete
作者:
MRSA
時間:
2010-11-24 00:02
回復
2#
oobird
試過版大的語法.
結果.定義名稱 Print_Area 仍然存在.
而且其 Refers To 的值也沒被改變. 這可以說是它根本沒被做任何修改或清除.
最後我只能用 Name Manager (Excel 2007的功能之一)來手動刪除.
很奇怪的情況,不是嗎?
我也試著使用錄製巨集的方式來刪除它. 也是沒用.
作者:
oobird
時間:
2010-11-24 00:09
若該名稱已經發生錯誤,就要手動刪除了!
作者:
MRSA
時間:
2010-11-24 00:34
本帖最後由 MRSA 於 2010-11-24 00:36 編輯
回復
5#
oobird
每個定義名稱會對應到四個值, 1是參位位址(Refers To), 2是值(Value), 3是定義名稱的Scope (Scope), 4是註解(Comment)
版大所謂的定義名稱錯誤的意思是指以上四個值的哪一個.
我所困惑的是,我在檔案內有許多定義名稱, 很多都是 Value 或 Refers To 有錯誤的(#REF! 或錯誤的外部連結), 但是,許多定義名稱為Print_Area都能被刪除,偏偏就獨獨這個 Print_Area (Value是#REF!, Refers To是=#REF!, Scope是Workbook, Comment是空白)的定義名稱刪除不了.
是Excel 2010 (我也在Excel 2007試過,也有同樣問題) 本身的問題嗎?
作者:
oobird
時間:
2010-11-24 10:35
看到#REF!, 就是發生錯誤了。
表示這個名稱已不成立,自然搜尋不到而要手工刪除!
作者:
HUNGCHILIN
時間:
2010-11-24 23:19
本帖最後由 HUNGCHILIN 於 2010-11-24 23:21 編輯
回復
7#
oobird
我測了一下壞掉連結的定義 可以用VBA刪
可能是那個檔比較奇怪,沒看到檔不知道
目前測都OK
步1.壞掉的定義
[attach]3751[/attach]
步2.VBA工具刪定義
[attach]3752[/attach]
步3.已刪除
[attach]3750[/attach]
作者:
oobird
時間:
2010-11-25 09:04
想起以前曾做過這樣的測試,在自己電腦建立的名稱,遺失參照的錯誤後,在vba可以全部刪除。
相同的情形若是接收別人的,vba就不把那些錯誤的名稱當做名稱而報錯。系統緩存會記錄文件所的有操作,這就是老的文件顯得臃腫的原因,照理存在緩存中的東西應該跟著檔案跑的,我始終不能明白其中道理!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)