2012-04-14 122 views
1

我有一個非常基本的問題。我已經開發出了一個可以從Access vba使用的COM DLL。在我的開發機器上運行良好。在測試機器上,當我運行Access應用程序時,我得到了註冊通過vba使用的dll

"error -2147024894 (80070002) Automation Error 
System can't find the specified file" 

msg。

當在設計視圖中的DLL被引用,所有的對象和屬性在VBA IDE顯示。

我想知道如果我使用了錯誤的regasm註冊DLL?我開發使用VS 2010

我編譯DLL中框架3.5在x86上運行64位的機器上。我應該使用框架V2。 o.50727或Framework \ v4.0.30319註冊dll。不清楚我有什麼不同。使用的版本是由開發版本的VS還是您編譯的.NET版本決定的?一個用於32位,另一個用於64位?

我一直爭取這2天,並已取得了一些進展,但無法獲得訪問例程實際設置在運行時DLL的一個實例。

在此先感謝您的幫助。

+0

你可以編輯你的問題放入一些分段符,並使用反引號格式化代碼類型的部分(如錯誤消息)嗎?段落突破是爲了這樣的情況而發明的 - 將大塊文本分解爲可讀塊。 :) 謝謝。 – 2012-04-14 22:10:44

+0

不確定提交後如何編輯。 – DougM 2012-04-14 22:16:54

+0

如果您使用同一個帳戶登錄,那麼您的問題中標籤下方會有一個編輯鏈接。 :)在編輯時,您可以在輸入問題的地方右下方的區域立即獲得所見即所得的預覽,以便您可以在提交時看到它的外觀。點擊文本區域右上角的橙色問號也可以獲得幫助。 – 2012-04-14 22:20:46

回答

1

如果您在V3.5編譯,您應該使用regasm。但是,我認爲您可能需要添加/ tlb和/ codebase開關來生成可在vba應用程序中使用的類型庫。然後你可以引用.tlb文件,你應該是金手指。

+0

我剛剛註銷了這個dll。然後移到新的位置。使用「C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ RegAsm.exe C:\ Users \ Doug \ Documents \ AccessProjects \ VROM \ dll \ eBayListing.dll /tlb:eBayListing.tlb \ codebase」重新註冊。訪問時立即發現它回到參考時。所有的代碼編譯,但我仍然'運行時找不到指定的文件'錯誤。 – DougM 2012-04-14 22:49:23

+1

就是這樣。我有代碼庫標誌倒退。當我讀完最後一篇時,我注意到了這個錯字。使用/ codebase的v2.0.50727版本的regasm做了訣竅。你們好棒! – DougM 2012-04-14 23:00:05

-2

VBA使用COM DLL。你將不得不使用C++,而不是.Net框架。

+0

可能我不清楚。我從vba引用我的dll。該DLL可以在我的開發機器上正常工作。問題似乎是在其他機器上正確註冊,以便在那裏使用。 – DougM 2012-04-14 22:15:32

+1

這只是錯誤的。不需要在C++中編寫COM(Delphi不是C++並生成可在VBA中使用的COM DLL),「VSTO」使用.NET。 – 2012-04-14 22:24:37

+0

對不起,我沒有正確閱讀這個問題。嘗試在目標計算機上的COM DLL上運行depends.exe。這將標記任何缺失的依賴關係。未找到80070002文件。 – 2012-04-14 22:53:07

0

您需要註冊使用regsvr32您的COM DLL從VBA引用它。