我在一個系統上安裝了Office 2010(32位)和Office 2013(64位)。
他們都單獨運行良好。
然後有一天Office 2013說有一些更新要安裝,我同意並讓它安裝更新。 現在,當我在Excel 2010中執行以下VBA代碼時,它將在Excel 2013中打開工作簿,並針對該工作簿運行我的查詢,而不是我已打開的工作簿。其他版本的Excel中的JET/ACE打開工作簿
Set conn = New ADODB.Connection
conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties='Excel 12.0;HDR=YES';"
已發生其他事情,例如Excel 2013現在默認打開所有Excel工作簿。
我嘗試使用「設置關聯」將Excel 2010(C:\ Program Files(x86)\ Microsoft Office \ Office14 \ EXCEL.EXE)設置爲默認值,但Excel 2013仍在打開它們。
右鍵單擊文件,並選擇與開放......並選擇
C:\ Program Files文件(x86)的\的Microsoft Office \ OFFICE14 \ EXCEL.EXE
打開它Excel中2013
如果我手動運行
C:\ Program Files文件(x86)的\的Microsoft Office \ OFFICE14 \ EXCEL.EXE
它打開Excel 2010中
我必須手動啓動Excel 2010,並在那裏打開文件。 但是,VBA代碼在2013年打開它。
我該如何解決這個問題?
首先,ADO連接在內存中打開。除非您打開[COM](https://msdn.microsoft.com/en-us/library/wss56bz7.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1)對象,否則您將啓動一個應用程序。 Jet/ACE是一個不會看到用戶程序的.dll數據存儲文件。其次,爲什麼您安裝了兩個Office版本,特別是Excel 2010和2013共享相同的文件類型。現在我可以理解爲了兼容性而使用較舊的Excel 2003。 – Parfait
@par我爲各種客戶開發Office應用程序,有些需要Office 2010,有些需要Office 2013.過去,我遇到過問題,我在Office 2013中開發應用程序,客戶在Office 2010中運行它時遇到問題。通常與參考有關。 –