最近想寫個小程序,是基於vsto的excel 擴展程序。
打開vs2017,創建時,卻提示 不能創建項目(創建項目失敗,Project cannot be created)。原本以為很順利的,不相處了這個bug。
我是安裝的vs2017社區版,office 是前幾個月公司購買的 office 2016 標准版。百度了,有幾下幾個方面,但都不是我的原因(我也列下來,也許能解決你的問題)
1,vs要用管理員權限打開
2,office 加載項要正常沒有異常,信任中心也要吧兩個選項去掉:
3,注冊表 的 hkey-class-root/.xlsx 的默認鍵值要改成 Excel.Sheet.12
但是這都不是我的問題,也就是我的以上都沒有問題。
查系統日志,為看到以下的錯誤:
錯誤應用程序名稱: EXCEL.EXE,版本: 16.0.4510.1000,時間戳: 0x58a36f28
錯誤模塊名稱: VSTOExcelAdaptor.dll,版本: 15.0.26112.1,時間戳: 0x5878595f
異常代碼: 0xc0000005
錯誤偏移量: 0x000278a7
錯誤進程 ID: 0x38b4
錯誤應用程序啟動時間: 0x01d2e9030814b9b1
錯誤應用程序路徑: C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE
錯誤模塊路徑: C:\Program Files (x86)\Microsoft Visual Studio\Shared\Visual Studio Tools for Office\x86\VSTOExcelAdaptor.dll
報告 ID: 375cfa47-b318-4ef6-bf34-9d95cf5c1492
錯誤程序包全名:
錯誤程序包相對應用程序 ID:
基本懷疑是加載項執行失敗,但是具體什么原因還是摸不着頭腦。翻牆出去谷歌,查到了n多帖子。也有好多老外在為這個事情頭痛。終於找到一個帖子,微軟的:
https://support.microsoft.com/en-us/help/4014433/project-cannot-be-created-or-excel-designer-cannot-be-activated-error-
提到一個可能的原因:There was an update to VBA that broke compatibility in VSTO Document-level scenarios. You will encounter this problem if you are using that version of VBA. To determine whether this is the cause of your problem, check the version of VBE7.dll to see whether it is 7.01.1056 (the full path is specified in the "More Information" section).
說人話就是,office的一個對 vba 的更新導致了對vsto文檔級別的項目的不兼容。如果你的vbe7.dll的版本是 7.01.1056 的話,基本上就會存在這個問題,要找 7.01.1060 和以上的版本才可以。
我看了看我的,正好是這個版本,悲劇了。
微軟發現這個問題后,給出了補丁,但是不像話的是,微軟只給采用 click-to-run方式安裝的office給了補丁(office365就是這種方式),但是對傳統.msi方式安裝的office則沒有發補丁(正好我的就是這種方式),可惡的M$。
微軟給出了兩種方案:
1,找台使用office365的機器,更新到最新版本,用它的vbe7.dll替換掉你的這個文件
2,恢復到老的office版本。
對后一種方式代價太大了,我打算采取第一種看似比較廉價的方案。
1,網上搜這個dll,找不到符合要求的版本號。
2,求助同事。無所不能的群終於發出了威力,一個同事正好自己的個人機器上安裝了 office 365 home/education edtion,他的vbe7.dll是 7.1.1068。
傳過來覆蓋過去,創建項目,成功!