2011-11-10 119 views

回答

10

有這些格式之間顯著差異:

  • .XLS旨在用於Excel 2003和以上的,所以你的VBA代碼需要向後兼容爲早期版本的Excel(< 2007)
  • .XLSX是Excel 2007格式,無法存儲VBA代碼
  • .XLSM.XLSB是Excel 2007格式,允許您將保存VBA代碼與工作簿。正如Sydenam所說,這兩者之間的區別在於工作簿的存儲方式。

簡而言之:.XLSB二進制格式(相當於.XLS爲2007+版本),而.XLSMOOXML格式。

有關更多信息,請參閱When should the xlsm or xlsb formats be used?


附錄的向後兼容性

我看不出有什麼簡單的方法來告訴你如何可以向後兼容,我們不能通用。您可以在Ozgrid在Excel 2007中添加的您還可以找到here新的方法和屬性上看到如何在Excel 2007中開發

Ozgrid頁面會給你新元素的Excel 2007中的一些技巧然後會告訴你如果你想向後兼容你不應該使用什麼。

+0

謝謝你的回答。問題是各種文件擴展名之間沒有區別! – kinkajou

+0

我認爲他問的更多關於Office 2007和2003 VBA方法之間的向後兼容性。例如,Office 2007中提供的新方法和事件在2003年將不會編譯。 – JimmyPena

+0

@JP:該死,謝謝。 OP的問題真的很不清楚......但是,我已經編輯了我的答案以適應這個新要求。 – JMax

1

Excel使用宏爲Visual Basic for Applications(VBA)。不同文件類型之間的主要區別在於數據如何存儲(編輯&重要 XLSX無法保存宏,問題XLSM中的格式和XLS可以將宏保存在工作簿中)。處理宏的是excel和VBA,所以這三種文件格式之間沒有任何問題。

+0

不,它不會在所有三種格式之間工作,因爲'XLSX' **不能存儲VBA ** – JMax

+0

@JMax您是否建議如果我在XLSX工作簿中編寫宏,它將不起作用?僅僅因爲它不能被存儲,並不意味着它不會起作用。 –

+0

嗯...它會工作...直到你保存你的工作簿在XLSX格式 – JMax

2

見JMAX對的是在Excel 2003

一般可用方法的列表響應,你應該寫的Excel最低版本的代碼,你願意支持。例如:如果您支持Excel 2000-2010,則應爲Excel 2000編寫代碼。

但請記住,某些方法可能會在以後的版本中被棄用。

例如,我會避免使用FileSearch共(在Excel 2007中不推薦使用),並使用迪爾代替。

您的代碼還應該測試本地Excel版本,並根據版本使用條件編譯。

有關條件編譯的幫助,請參見Using Conditional Compilation

還要記住,XLSX文件不能保存宏。因此,如果它們包含宏代碼,則不應以這種格式保存文件。

+0

+1用於指出'FileSearch'函數大小寫。 MS說這是bug,所以他們在Excel 2007+中刪除它,這可能會很棘手! – JMax

相關問題