2015-01-15 167 views
2

引用VBA組件我有一個C#.NET 3.5的項目,遺憾的是依賴於幾個VB6的ActiveX控件。運行時錯誤從C#

到現在爲止,我已經能夠通過簡單地在我的項目增加了控制的參考和引用它們的正常愉快地訪問ActiveX控件定義的數據容器和方法。

不過,我今天遇到了障礙,當我不得不調用返回VBA.Collection的方法。

我的代碼沒有問題,編譯,但在運行時我得到以下錯誤:

Could not load file or assembly 'Interop.VBA, Version=6.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.

我不得不引用Interop.VBA(版本6.0.0.0)和Interop.VBRUN(版本6.0.0.0 )在我的項目中,有什麼想法?

我不能給出具體的代碼,它是根據一份NDA覆蓋。

然而,這裏是從對象瀏覽器示例代碼與名稱變更爲保護不那麼天真;)

我可以從我的代碼中引用了以下屬性和方法:

ReturnConstants GoodMethod(); 
string prop1 
ReturnConstants prop2 

如果我嘗試可以調用此方法,我得到上述錯誤信息在運行時:

Collection BadMethod(); 

所以調用返回,導致這一問題的VBA.Collection的方法。 這些是我無法控制的第三方控件,它們不會被重寫.net

編輯:出於興趣我在VS2010中嘗試了一個快速虛擬項目,並且按預期完美工作,這可能是VS2012的一個問題。我見過一些帖子暗示2012年不會正確創建VBA的互用性,所以我會去看看我能在那裏找到什麼...

+2

不好看,看漢斯Passants評論:stackoverflow.com/questions/25816367/dll-for-vba-collection雖然如果它在VS2010中起作用,並且已將其縮小到VS 2012問題,請查看[此MSDN主題]中的最後一篇文章(https://social.msdn.microsoft.com/Forums/vstudio/en-US/4dc9413e-9c18-43d3-a989-27db6f8f4d96 /使用-comreference與 - 淨-4-目標平臺和 - aximp?論壇=的msbuild)由Marucio。無論如何,這些都是猜測,也許是一個ProcessMonitor,看看它找到一個它找不到的文件是什麼,在哪裏更orthadox TS'ing。 –

+0

我希望你能對它進行排序,我只想提到最後一件事。使用Interops,VS2012 [加載不同版本](http://stackoverflow.com/a/13328392/495455)!因此,檢查模塊窗口,看看是否有助於進一步縮小問題的範圍。祝你好運! –

回答

2

感謝@Jeremy Thompson讓我走上正軌,運行過程監視器向我顯示,我的應用程序無法找到interop.VBA.dll文件,一旦解決了所有問題,都按預期工作。不知道爲什麼,這個作品開箱2010年和2012不上,但很高興有一個解決方案