Question

Utilisation de c #, VS2005 et .NET 2.0. (XP 32 bits) Il s'agit d'une application Winforms appelée par un complément VBA (.xla) via des bibliothèques Interop. Cette application existe depuis un certain temps et fonctionne correctement lorsque l'assemblage est compilé et exécuté ailleurs que sur ma machine de développement. Sur dev, il se bloque brutalement (dans le débogueur et l’exécution de l’objet) avec "Exception non gérée à 0x ... dans EXCEL.EXE: 0x ... emplacement de lecture de violation 0x ...

Mais voici la partie étrange:

La première méthode de mon interface fonctionne bien. Toutes les autres méthodes se bloquent comme ci-dessus. Voici 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);
        {...}

    }

Cela ressemble à une sorte de chose environnementale. Registre mis à sac? Cela pourrait être des bugs de code, mais cela fonctionne très bien ailleurs.

Était-ce utile?

La solution

J'ai déjà eu des problèmes avec Office 2003 dans ce scénario. Certaines choses qui ont aidé:

  • L’installation du Service Pack 2 d’Office 2003 a arrêté certains plantages survenus lors de la fermeture d’Excel.

  • L’installation d’Office 2003 Service Pack 3 corrige un problème lié à l’utilisation de styles XP dans une application VSTO2005 (ce n’est pas votre cas ici)

  • Exécution de VBA CodeCleaner Excel http://www.appspro.com/Utilities /CodeCleaner.htm aide régulièrement à éviter les plantages aléatoires.

  • L'accès aux objets Excel à partir de plusieurs threads serait louche, donc j'espère que vous ne le ferez pas.

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

Autres conseils

Votre machine de développement est-elle Win64? J'ai eu des problèmes avec les versions d'applications Win64 qui disparaissent si vous définissez la plate-forme de construction sur x86.

Votre ordinateur dev utilise-t-il une version d'Office différente de celle des autres ordinateurs? Je sais que les PIA diffèrent. Ainsi, si vous développez sous Office 2003 et testez sous Office 2007 (ou inversement), par exemple, vous rencontrerez des problèmes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top