/ / Accesso all'oggetto Diapositiva nel componente aggiuntivo di PowerPoint - c #, powerpoint

Accesso all'oggetto Diapositiva nel componente aggiuntivo di PowerPoint - c #, powerpoint

Sto creando un componente aggiuntivo per PowerPoint e ho bisogno di accedere alle diapositive o agli oggetti diapositiva, o anche all'intera presentazione, purtroppo l'unico metodo che posso vedere per fare questo è aprire un nuovo file ppt. In questo momento, dovrò ricorrere al metodo hacky per salvare la presentazione corrente e riaprirla con Packaging per manipolare qualsiasi cosa (in particolare, devo SHA gli oggetti Slide dal file pptx per vedere se sono cambiati - non ideale)

C'è un modo per aprire il file che è attualmente aperto in PowerPoint senza dover IO un file?

Grazie per l'aiuto, P

risposte:

0 per risposta № 1

Presumo che tu abbia creato un progetto aggiuntivo di PowerPoint (2007/2010) in VisualStudio. In generale è possibile accedere alla presentazione attiva con una classe statica Globals per di qua:

Globals.ThisAddIn.Application.ActivePresentation.Slides[slideIndex] ...

Modifica: esempio per l'utilizzo:

using PowerPoint = Microsoft.Office.Interop.PowerPoint;

...

try
{
int numberOfSlides = Globals.ThisAddIn
.Application.ActivePresentation.Slides.Count;

if (numberOfSlides > 0)
{
// get first slide
PowerPoint.Slide firstSlide = Globals.ThisAddIn
.Application.ActivePresentation.Slides[0];

// get first shape (object) in the slide
int shapeCount = firstSlide.Shapes.Count;

if (shapeCount > 0)
{
PowerPoint.Shape firstShape = firstSlide.Shapes[0];
}

// add a label
PowerPoint.Shape label = firstSlide.Shapes.AddLabel(
Orientation: Microsoft.Office.Core
.MsoTextOrientation.msoTextOrientationHorizontal,
Left: 100,
Top: 100,
Width: 200,
Height: 100);

// write hello world with a slidenumber
label.TextFrame.TextRange.Text = "Hello World! Page: ";
label.TextFrame.TextRange.InsertSlideNumber();
}
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show("Error: " + ex);

}