我已經成功了就可以按照張貼在這裏Execute .NET 3.0 code from Office 2003使用標準的.NET庫與VBA
步驟來運行我自己的.NET代碼是否有使用標準的.NET庫,而無需編寫的包裝方式?這樣我們可以避免必須在客戶機上的GAC中註冊和安裝自定義DLL。
我發現已經在C:\ Windows \ Microsof.NET \ Framework文件夾中的tlb文件,並且已經能夠添加對mscorlib.dll的引用。查看RijndaelManaged的文檔,該類似乎是COM可見的。
我能夠創建一個實例,但只要嘗試使用它,我就會遇到錯誤(例如「類型不匹配」)。
Sub Macro1()
Dim aesImplementation As New RijndaelManaged
Set key = aesImplementation.GenerateKey()
Set iv = aesImplementation.GenerateIV()
End Sub
我願意接受任何黑客,你必須提供!
我沒有答案回覆::使用
或更好,而不是至少在調試的時候,你可以看到是否施工過程中發生錯誤或當你調用該方法,因爲。沒有包裝的.NET,但如果你是VBA的新手,你需要知道聲明'As New'並沒有像在.NET中一樣實例化任何東西。我不清楚你的錯誤是在實例化還是在'Set'上提出的。 (我假設你已經聲明你的'關鍵'變量是正確的類型,等等。)請參閱http://stackoverflow.com/questions/2478097/vba-difference-in-two-ways-of-declaring-a - 新對象試圖瞭解 - 爲什麼/ 2480559#2480559 – jtolle 2010-11-17 15:11:40
這太瘋狂了爲什麼有新的語法,如果它沒有實例化一個新的對象?!它似乎在這種情況下創建了一個實例,但我會記住,至少「As New」不是最佳實踐。 我沒有明確聲明關鍵對象的原因是因爲我得到「無法分配給數組」錯誤,如果我這樣做。很明顯,當你嘗試分配給不同類型的數組時,會發生這種錯誤。 – 2010-11-19 02:49:53
這不是很多工作來節省一些工作嗎?我的意思是,如果你的用戶允許你運行一個宏,爲什麼不運行一個實際的.NET應用程序呢? .NET中的Office互操作似乎相當不錯,所以您可以同等或更好地操作文檔! – 2010-11-20 02:12:05