Ceci est irritant. J'ai créé une méthode pour copier tous les graphiques Excel dans un classeur vers des diapositives PowerPoint.L'importation de diagrammes Excel d'Excel vers PowerPoint provoque l'apparition de `RPC_E_SERVERFAULT` sur certaines machines
public int ImportExcelChartsFromWorkbookToSlides(int startingSlideIndex, string workbookPath, string[] slideTitles, int chartPosTop, int chartPosLeft = 10, int titleWidth = 680, int titleHeight = 20, int titlePosTop = 90, int titlePosLeft = 20, int titleFontSize = 18)
{
int slideIndex = startingSlideIndex;
int titleIndex = 0;
EXCL.Application objExclApp = new EXCL.Application();
EXCL.Workbook objWorkbook = objExclApp.Workbooks.Open(workbookPath, Editable: false);
foreach (EXCL.Worksheet objSheet in objWorkbook.Worksheets)
{
foreach (EXCL.ChartObject objChart in objSheet.ChartObjects())
{
AddBlankSlide(slideIndex);
AddTextBox(titleWidth.ToString(), titleHeight.ToString(), titlePosTop.ToString(), titlePosLeft.ToString());
AddTextBoxParagraph(slideTitles[titleIndex], fontSize: titleFontSize.ToString(), useThemeFont: true);
// Copy Chart from Sheet to Slide
objChart.CopyPicture();
PPT.ShapeRange objShapeRange = objSlide.Shapes.Paste();
objShapeRange.Left = chartPosLeft;
objShapeRange.Top = chartPosTop;
slideIndex++;
titleIndex++;
Marshal.ReleaseComObject(objChart);
Marshal.ReleaseComObject(objShapeRange);
}
Marshal.ReleaseComObject(objSheet);
}
objWorkbook.Close();
objExclApp.Quit();
Marshal.ReleaseComObject(objWorkbook);
Marshal.ReleaseComObject(objExclApp);
objWorkbook = null;
objExclApp = null;
return slideIndex;
}
Comme est généralement le cas, cela fonctionne parfaitement sur ma machine, mais certains utilisateurs font état d'une RPC_E_SERVERFAULT
de cette méthode. (HRESULT: 0x80010105)
Quelque part dans cette méthode est à l'origine du problème. Soit cela ou c'est un problème avec différentes installations de bureau, un problème de mémoire ou un complément causant le problème. J'ai essayé ceci sur quelques autres machines mais elles fonctionnent toujours.
Merci pour l'info Hans. Tous nos utilisateurs sont sur Office 2013, cependant la configuration est toujours différente pour les différents utilisateurs ce qui est toujours difficile à diagnostiquer – Timmo
Pensez-vous qu'une bonne solution consiste à enregistrer les graphiques sous forme d'images, puis à importer les images? Je sais que c'est un moyen long de faire cela, mais il supprime l'élément de presse-papiers – Timmo
Pas vraiment d'idée comment vous faites cela. Gardez juste à l'esprit que si ma théorie est correcte, cela n'a rien à voir avec le presse-papier et * tous * les membres d'IChartObject sont en difficulté. Sauf le premier. –