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 № 1Presumo 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);
}