Je travaille sur un plugin VSTO Excel 2007 qui lance des exceptions COM sur le client mais pas lors du débogage sur mon ordinateur de développement. Le plugin capture l'événement Startup d'Excel, définit un style spécialisé, puis ajoute un gestionnaire d'événements à l'événement SheetChange. Chaque fois qu'une valeur est modifiée dans la feuille, la cellule est définie sur le nouveau style. Tout cela pour fournir aux utilisateurs un moyen de voir les cellules qu'ils ont modifiées. Le code est le suivant:Excel 2007 Exception du plug-in VSTO lors du paramétrage de Font.Color
private void ThisWorkbook_Startup(object sender, System.EventArgs e)
{
this.BeforeSave += new Microsoft.Office.Interop.Excel.WorkbookEvents_BeforeSaveEventHandler(ThisWorkbook_BeforeSave);
this.SheetChange += new Microsoft.Office.Interop.Excel.WorkbookEvents_SheetChangeEventHandler(ThisWorkbook_SheetChange);
cfStyle = Globals.ThisWorkbook.Styles.Add("CFStyle", missing);
cfStyle.Font.Color = Excel.XlRgbColor.rgbOrange;
cfStyle.Font.Bold = true;
cfStyle.Interior.Color = Excel.XlRgbColor.rgbLightGray;
cfStyle.Interior.TintAndShade = 0.8;
cfStyle.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;
cfStyle.Borders.Weight = Excel.XlBorderWeight.xlThin;
cfStyle.Borders.Color = Excel.XlRgbColor.rgbDarkSlateGray;
cfStyle.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlDiagonalDown].LineStyle = Excel.XlLineStyle.xlLineStyleNone;
cfStyle.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlDiagonalUp].LineStyle = Excel.XlLineStyle.xlLineStyleNone;
}
Lorsque cela s'exécute dans dev, il fonctionne parfaitement. Cependant, quand il est exécuté sur une machine client, j'obtiens ce détail d'exception une fois que le plugin VSTO se charge. La partie intéressante est qu'il semble échouer sur la première interaction COM, qui se trouve être en train de définir une propriété Style.Font.Color.
Voici les détails d'exception:
System.Runtime.InteropServices.COMException (0x800A03EC): Exception de HRESULT: 0x800A03EC
pile de serveur trace:
Exception à relancée [ 0]:
à System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (IMessage reqMsg, IMessage retMsg)
à System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData & MSGDATA, le type Int32)
à Microsoft.Office.Interop.Excel.Font.set_Color (Object )
à TriQuint.DemandPlanning.Workbook.ThisWorkbook.ThisWorkbook_Startup (Object expéditeur, EventArgs e)
à Microsoft.Office.Tools.Excel.Workbook.OnStartup()
à TriQuint.DemandPlanning.Workbook.ThisWorkbook.FinishInitialization()
à Microsoft.VisualStudio.Tools.Office.EntryPointComponentBase.Microsoft (.VisualStudio.Tools.Applications.Runtime.IEntryPoint.FinishInitialization)
à Microsoft.VisualStudio.Tools.Applications.AddInAdapter.ExecutePhase (ExecutionPhases executionPhases)
à Microsoft.VisualStudio.Tools.Applications.AddInAdapter.CompleteInitialization()
à Microsoft.VisualStudio.Tools.Office.Internal.OfficeAddInAdapterBase.ExecuteEntryPointsHelper()
a-t-on jamais vu quelque chose comme ce? J'ai fait quelques validations, comme assurer les bonnes versions de .NET, VSTO Interop, Excel 2007, etc.
Merci d'avance pour tout conseil! Jim
Merci pour votre réponse. L'utilisation de Font.ColorIndex affiche cette fois la même exception pour le paramètre ColorIndex. Je suppose que c'est à cause de la deuxième question que vous mentionnez. Cependant, je ne suis pas tout à fait sûr de savoir comment remplacer la palette de couleurs. Une autre ride dans ce que j'ai découvert est que le plugin fonctionne avec une feuille blanche. Si la feuille est générée (j'utilise Aspose.Cells), l'exception est levée. – Aggnaught