2008-10-13 90 views
7

我在哪裏開發利用已更新爲Excel 2007中,但大多數用戶都沒有。我正在爲需要包含一些vba代碼的用戶構建一個電子表格模板(* .xlt),我想知道在2007年而不是2003年可能會遇到什麼問題?我無法訪問使用Excel 2003進行測試的計算機,而且我擔心這個特定項目正在發生災難。編寫VBA在Excel 2007在Excel 2003

+0

我已經說服了我的老闆讓我在ASP.Net頁面而不是電子表格中創建它(它將以這種方式與我們的其他Intranet應用程序進行良好的配合),所以從我的角度來看,這個問題現在沒有意義。但是,這裏的信息對其他人可能仍然有用,所以我將它保持活躍。 – 2008-11-04 04:55:03

+0

真的這個問題是相當有趣的,但不幸的是由於無盡的用例情況,我們可能永遠不會完成它。真的沒有理由不將虛擬機與Office 2003一起用於開發和測試。 – 2010-10-12 21:29:17

回答

8

VBA語言並沒有改變,但也有在Office 2007中沒有的Office 2003中。當然更多的對象,當您嘗試在2003年的環境中訪問這些項目,這將導致運行時錯誤。什麼阻止你設置虛擬機使用Excel 2003進行開發?

+1

我無法在此處執行任何虛擬機工作。如果你可以指向我的附加對象列表,所以我可以知道避免它們,那很好。 – 2008-10-13 17:27:18

2

billb2112是正確的。 Excel 2007對excel 2003的許多更改都不是向後兼容的。雖然語言可能沒有改變,但對象已經更新。一些已經添加了額外的屬性,一些工作方式不同,Excel中的一些功能已經改變。

你需要非常小心,你的代碼在Excel 2003中工作。 我會建議,因爲billb2112說,你得到一個虛擬機不僅測試,而且代碼英寸我做我所有的Excel開發爲在2003年的機器上只有2003的客戶。請注意,如果用戶使用Excel 2002或2000,則返回時會有更多差異,並且只會在這些舊版本不支持的任何代碼上發生運行時錯誤。

更新 不幸的是傑夫斯的答案是不太正確的。而對VBA語言尚未更新,它不是在2007年與2003年一樣,2003年的不一樣,2002年等 發生了什麼事是額外的功能和附加功能和參數已被添加。例如,2003年在Excel中的FIND函數中有更多的選項比2002年更多。因此,如果在2003年錄製一個宏(找到這些問題的最好方法),然後在2002年運行它,那麼將會運行與新的參數在2002年VBA編輯器中無法使用。對於在Excel 2007中已更改的功能執行相同的過程,然後再回到2003進行測試,將幫助您找到這些問題。一些例子包括條件格式化,顏色(主題)和許多新的電子表格功能。 jon peltier從這方面得到了最好的建議 - 在客戶端/用戶將使用的最早版本中開發。 Virtual PC 2007可以免費下載和安裝。你只需要一個XP/Vista和辦公室的許可副本來安裝運行它。

+0

不幸的是,虛擬機不是一個選項。我真的需要一份2003年沒有的項目清單。 – 2008-10-15 13:12:39

5

而不是依賴於已添加到Excel 2007的對象庫中的對象和方法的可能不完整的列表,最好的(mmost可重寫)練習總是在可能用於運行的最早版本的Excel中開發碼。

+0

不幸的是,我沒有這個選項。 – 2008-11-04 04:53:25

-3

我曾經開發出了很多宏2003下,有什麼POTA ,,之類的東西找到,迪爾和其他一些不可用什麼變化。因此,有些錯誤回報可以預期,我使用了65000行數到的第一個非空行數行上下工夫....現在更多的行意味着更多的工作要做

4

一個不同之處,我發現是,子例程必須具有與從功能區調用(在Excel 2007中)不同的特徵才能從菜單中調用(在Excel 2003中)。還有,Excel 2003無法識別IRibbonControl並引發編譯錯誤。

要朝着跨版本兼容的工作,我使用條件編譯參數,然後檢查,在預處理器宏。

例如

#If USINGRIBBON Then 
    Public Sub CallFromRibbon(control As IRibbonControl) 
#Else 
    Public Sub CallFromRibbon() 
#End If 
    ' Code here 
    End Sub 

這並不意味着你必須保存您的外接的一個版本設置爲false(對於Excel2003中)的USINGRIBBON標誌,另一個與USINGRIBBON標誌設置爲true(對於Excel2007中),但是這是比維護兩個完全獨立的代碼庫要容易得多。