2008-09-19 8 views
0

Utilisation de C#, VS2005 et .NET 2.0. (XP 32 bits) Il s'agit d'une application Winforms appelée par un addin VBA (.xla) via des bibliothèques Interop. Cette application a été autour pendant un certain temps et fonctionne bien lorsque l'assemblage est compilé et exécuté ailleurs que ma machine dev. Sur Dev il bloque dur (dans le débogueur et juste en cours d'exécution de l'objet) avec "exception non gérée à 0x ... en EXCEL.EXE: 0x ... infraction lecture emplacement 0x ...Violation d'accès à un ajout Excel

Mais voici la partie étrange:

la première méthode dans mon interface fonctionne bien Toutes les autres méthodes écrasent comme ci-dessus est ici une approximation du code:..

[Guid("123Fooetc...")] 
    [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)] 
    public interface IBar 
    { 
     [DispId(1)] 
     void ThisOneWorksFine(Excel.Workbook ActiveWorkBook); 

     [DispId(2)] 
     string Crash1(Excel.Workbook ActiveWorkBook); 

     [DispId(3)] 
     int Crash2(Excel.Workbook activeWorkBook, Excel.Range target, string someStr); 
    } 

    [Guid("345Fooetc..")] 
    [ClassInterface(ClassInterfaceType.None)] 
    [ProgId("MyNameSpace.MyClass")]  
    public class MyClass : IBar 
    { 
     public void ThisOneWorksFine(Excel.Workbook ActiveWorkBook) 
     {...} 

     string Crash1(Excel.Workbook ActiveWorkBook); 
     {...} 

     int Crash2(Excel.Workbook activeWorkBook, Excel.Range target, string someStr); 
     {...} 

    } 

Il semble comme une sorte de chose Registre environnemental chundered peut être le code.? bugs, mais ça marche bien ailleurs

Répondre

2

J'ai rencontré des problèmes dans ce scénario avec Office 2003 par le passé. Certaines choses qui ont aidé:

  • L'installation d'Office 2003 Service Pack 2 a arrêté certains incidents qui se sont produits lors de la fermeture d'Excel.

  • Installation Office 2003 Service Pack 3 corrige un bug avec l'aide de XP styles dans une application VSTO2005 (pas votre cas ici)

  • Exécution de l'Excel VBA CodeCleaner http://www.appspro.com/Utilities/CodeCleaner.htm aide périodiquement à éviter les plantages aléatoires. Accéder à des objets Excel à partir de plusieurs threads serait douteux, donc j'espère que vous ne le faites pas.

Si vous avez la possibilité, vous pouvez également essayer d'ouvrir un cas avec Microsoft PSS. Ils sont assez bons si vous êtes capable de reproduire le problème. Et dans la plupart des cas, ce genre de chose est un bug, donc vous ne serez pas facturé pour cela :)

+0

Thx Joe! Code Cleaner a fait l'affaire. –

0

Machine à Win64? J'ai eu des problèmes avec les versions win64 des applications qui disparaissent si vous définissez la plate-forme de construction à x86.

0

Votre machine dev fonctionne-t-elle avec une version différente d'Office que les autres machines? Je sais que les ÉFVP diffèrent. Donc, si vous développez sur Office 2003 et testez sur Office 2007 (ou vice versa), par exemple, vous rencontrerez des problèmes.

Questions connexes