我討論了Excel 2007和Excel 2010 Beta中存在的錯(cuò)誤。以下是該條目的摘要:當(dāng)報(bào)表工作簿中的Excel范圍名稱引用數(shù)據(jù)庫(kù)工作簿中的表單范圍名稱時(shí),如果先打開(kāi)報(bào)表工作簿,然后再打開(kāi)數(shù)據(jù)庫(kù)工作簿,則Excel會(huì)刪除報(bào)表工作簿在數(shù)據(jù)庫(kù)工作簿中引用的所有表單范圍名稱。如果您不使用工作表范圍的名稱,那么此建議意義不大。因此,讓我們先討論打印范圍來(lái)討論范圍名稱的范圍…分配打印區(qū)域時(shí),實(shí)際上是在為工作表分配范圍名稱“ Print_Area”。然后,在打印工作表時(shí),如果已定義,則Excel僅打印Print_Area范圍。這種方法在早期的Excel中非常有效,當(dāng)時(shí)工作簿只能有一個(gè)工作表。但是后來(lái),Microsoft在1993年用Excel 5引入了多頁(yè)工作簿。據(jù)說(shuō),微軟正在向一組開(kāi)發(fā)人員演示Excel 5的早期版本。其中一個(gè)問(wèn):“我們現(xiàn)在可以在一個(gè)工作簿中放幾張紙。但是我們只能有一個(gè)Print_Area范圍名稱。那么我們?nèi)绾螢楣ぷ鞑局械拿繌垐D紙分配一個(gè)打印區(qū)域?”
程序員擠在舞臺(tái)上,故事走了,最后告訴開(kāi)發(fā)人員:“我們會(huì)盡快就此與您聯(lián)系。”程序員想出的是一種限定范圍名稱的方法。即,Excel范圍名稱可以具有工作簿范圍或工作表范圍。若要查看它們的工作原理,假設(shè)您定義“ Foo”以引用新工作簿的第1頁(yè)的某些范圍。默認(rèn)情況下,這將是一個(gè)工作簿范圍的名稱。現(xiàn)在,在工作表2中,假設(shè)您將工作表的區(qū)域定義為“ Sheet2!Foo”。這樣做會(huì)將范圍定義為工作表范圍的名稱。(新Excel中的“新名稱”對(duì)話框提供了一個(gè)下拉列表框,與以前的Excel版本相比,它使您可以更輕松地指定范圍。)現(xiàn)在讓我們看看這些名稱是如何工作的……激活圖紙2.按F5鍵,在“轉(zhuǎn)到”對(duì)話框中輸入“ Foo”作為“參考”,然后按OK。Excel將為工作表2選擇工作表范圍的名稱。激活圖紙3.再次使用GoTo對(duì)話框轉(zhuǎn)到“ Foo”。這次,Excel將選擇由工作簿作用域名稱定義的范圍,該名稱參考表1。激活圖紙3.使用“轉(zhuǎn)到”對(duì)話框轉(zhuǎn)到“ Sheet2!Foo”。這次,Excel將選擇由工作表范圍名稱定義的范圍名稱,該名稱指的是工作表2。一個(gè)工作簿中可以有一個(gè)工作簿作用域名稱,但是與工作表一樣多。這使我們進(jìn)入了數(shù)據(jù)庫(kù)工作簿……到目前為止,我建議在數(shù)據(jù)庫(kù)工作簿中使用多個(gè)工作表。例如,您可以在名為Actual的工作表中擁有一個(gè)數(shù)據(jù)庫(kù),而在名為Target的工作表中擁有另一個(gè)數(shù)據(jù)庫(kù)。可以為這兩個(gè)數(shù)據(jù)庫(kù)分配工作表范圍的名稱Data。使用這種方法,您可以使用以下引用來(lái)引用兩個(gè)范圍:= [Database.xls]實(shí)際!數(shù)據(jù)= [Database.xls]目標(biāo)!數(shù)據(jù)在Excel 2007之前,這種方法非常有效。但是,正如我在博客條目中對(duì)Excel漏洞(與Excel 2007(可能還有Excel 2010))中所述的那樣,必須在打開(kāi)報(bào)表工作簿之前打開(kāi)Database.xls(或Database.xlsx)。如果首先打開(kāi)報(bào)表工作簿,則Excel將在數(shù)據(jù)庫(kù)工作簿中找到報(bào)表工作簿所依賴的所有工作表范圍的名稱,然后自動(dòng)刪除它們。
那么,解決此錯(cuò)誤的最佳方法是什么?在我的博客文章中,我提供了三種選擇:使用Excel 2003,先打開(kāi)數(shù)據(jù)庫(kù)工作簿,或者在數(shù)據(jù)庫(kù)工作簿中不要使用工作表范圍的名稱。最后的建議似乎是最好的長(zhǎng)期解決方案。也就是說(shuō),當(dāng)您設(shè)置數(shù)據(jù)庫(kù)和報(bào)表工作簿時(shí),請(qǐng)按照設(shè)置范圍名稱以將報(bào)表連接到Excel數(shù)據(jù)庫(kù),第1部分中的說(shuō)明來(lái)設(shè)置數(shù)據(jù)庫(kù)工作簿。然后,當(dāng)您需要其他數(shù)據(jù)庫(kù)時(shí)-用于目標(biāo)或在不同的時(shí)間時(shí)間段,或者邏輯上不同的數(shù)據(jù),或者其他任何內(nèi)容,請(qǐng)?jiān)趩为?dú)的工作簿中創(chuàng)建這些數(shù)據(jù)庫(kù)。然后,當(dāng)您打開(kāi)報(bào)表工作簿時(shí),可以使用“編輯鏈接”對(duì)話框打開(kāi)所有數(shù)據(jù)庫(kù)工作簿。為此……在New Excel中,選擇“數(shù)據(jù)”,“連接”,“編輯鏈接” …在Classic Excel中,選擇“編輯”,“鏈接” …最后,在“編輯鏈接”對(duì)話框中,選擇列表中的所有工作簿,然后選擇“開(kāi)源”。當(dāng)您這樣做時(shí),Excel將打開(kāi)所有這些數(shù)據(jù)庫(kù)工作簿。這是我目前聽(tīng)到和研究的最好建議。如果我有更好的建議或者讀者這邊有更好的建立,我會(huì)一直與大家討論并研究和大家一起分享的。






