2013-04-10 530 views
4

對不起,如果這是一個愚蠢的問題。不同Office版本之間的VBA兼容性

我可以做些什麼來使我的VBA代碼在Office 2003/2007/2010上工作?

它可以做到或應該爲每個創建不同的VBA代碼?

我用

  1. WinHttp.WinHttpRequest.5.1
  2. 做了很多的Windows的API調用
  3. 不得不庫
  4. 的wininet.dll
  5. KERNEL32
  6. 展望5個引用。應用程序
  7. InternetExplorer.Application

我正在開發Office 2007,但Office 2010無法運行代碼的用戶。不確定用戶是否在運行其他Office版本。

我也看到,可以在Visual Studio中創建一個Excel插件,但我沒有很多的經驗。

Thx對於任何建議。

+1

如果您使用Win32 API調用,並且Office 2010用戶使用64位Windows,則由於聲明不存在,這些API調用將不會運行。另外,檢查Office 2010用戶計算機上的VB項目中的引用,就好像IE版本不同一樣,這也會失敗! – 2013-04-10 11:20:24

+2

對象模型存在顯着差異,這意味着一個版本中存在的對象不存在於另一個版本中。這是令人討厭的麻煩。例如:一個類型的形狀圖片變成了一個類型的形狀圖片的佔位符 - 因此用於查找圖片的代碼停止工作。那是在我們談論32/64之前,以及與其他應用程序/版本的溝通。 – Floris 2013-04-10 11:46:52

+0

Thx爲您的答覆。我開始懷疑我是否不應該爲此寫一個普通的c#應用程序。 – Albertus 2013-04-10 11:54:22

回答

1

針對不同版本的Excel,你可以使用條件編譯如#If Application.version>n then

然而,對於誰擁有Win64的系統的所有用戶,您必須提供調用API函數的不同方法。

最好的辦法是使用Office.Interop或VSTO從.NET使用自動化來嘗試和操作Excel。