Segnalo un problema (e la relativa patch) che mi ha impegnato per mezza giornata ieri. Ho realizzato un add-in per Office 2003/2007 che utilizza funzionalità di un assembly .Net in cui alcuni tipi sono riesposti via COM Interop; per farlo l'add-in fa da host del CLR al quale chiede di caricare l'assembly. Andando al nocciolo della faccenda, il problema si può riscontrare anche riscrivendo semplicemente il codice come macro Office:

Sub Macro1()
    Dim Runtime As CorRuntimeHost
   
    Set Runtime = New CorRuntimeHost '(*)
    Runtime.Start
End Sub

E' necessario referenziare le seguenti type library:
"Common Language Runtime Execution Engine 2.0 Library" (C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscoree.tlb)
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorlib.tlb

Sulla mia macchina (Win2003 Server, Visual Studio 2005, Office 2007) il tutto funziona benone. Su una macchina Win2000 Professional/WinXP (non ho provato con altri sistemi operativi) con .Net Framework 2.0 e Office (ho provato solo con Office XP e 2003), la linea di codice (*) solleva un "Automation error".
La cosa "interessante" è che lo stesso codice scritto nell'IDE di VB6 e compilato non produce nessun errore e sembra funzionare correttamente!
Purtroppo non sono riuscito a circoscrivere con esattezza il problema ma sembra essere legato a COM Interop, con assembly .Net 2.0, quando il codice gira all'interno di Office (come add-in o macro). Non sembra dipendere dalla versione di Office (ho provato con Office XP e 2003) e nemmeno dal sistema operativo (ho provato su Windows 2000 Professional SP4, Windows XP SP2, Windows 2003 SP1).
Ho trovato una fix che almeno sperimentalmente sembra funzionare anche se le circostanze non sono esattamente le stesse.
Spero che il tutto possa essere di aiuto a qualcuno che ha la sfortuna di incappare nello stesso problema.