2013-10-24 50 views
1

我有以下代码来打开工作表,复制一个图表,打开演示文稿并将其粘贴。从ppt演示文稿中选择某个幻灯片并粘贴excel图表

它工作正常,一张图表和一张幻灯片,但在XLSM中有8个图表,所以在PPTX中有8张幻灯片,我不知道如何选择例如第二张图表并将其粘贴到第二张或演示文稿的第三张幻灯片。

With the PowerPoint.Slide curSlide = pptApp.ActiveWindow.View.Slide;它选择当前幻灯片或滑动1.

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using Microsoft.Office.Core; 
using xlNS = Microsoft.Office.Interop.Excel; 
using PowerPoint = Microsoft.Office.Interop.PowerPoint; 
using Graph = Microsoft.Office.Interop.Graph; 
using System.Runtime.InteropServices; 

namespace WindowsFormsApplication3 
{ 
    public partial class Form1 : Form 
    { 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 

     try 
     { 
      xlNS.Application excelApplication = null; 
      xlNS.Workbook excelWorkBook = null; 
      xlNS.Worksheet targetSheet = null; 
      xlNS.ChartObjects chartObjects = null; 
      xlNS.ChartObject existingChartObject = null; 

      String Excelpath = "C:\\Users\\Diego\\Desktop\\Indicador Mensal.xlsm"; 
      excelApplication = new xlNS.Application();//Instancia o excel e abre o XLSM 
      excelWorkBook = excelApplication.Workbooks.Open(Excelpath, 
       Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
       Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
       Type.Missing, Type.Missing, Type.Missing, Type.Missing); 

      PowerPoint.Application pptApp = new PowerPoint.Application(); 
      pptApp.Presentations.Open("C:\\Users\\Diego\\Desktop\\Teste.pptx", MsoTriState.msoFalse, MsoTriState.msoTrue, MsoTriState.msoTrue); //Abre o PPTX 
      PowerPoint.Slide curSlide = pptApp.ActiveWindow.View.Slide; 

      xlNS.Worksheet Ws = new xlNS.Worksheet(); 
      Ws = (xlNS.Worksheet)excelWorkBook.Worksheets[1];//Número da Planilha que contém o gráfico 
      Ws.Activate(); 

      targetSheet = (xlNS.Worksheet)(excelWorkBook.Worksheets["Assumidos no Prazo"]); 
      chartObjects = (xlNS.ChartObjects)(targetSheet.ChartObjects(Type.Missing)); 
      existingChartObject = (xlNS.ChartObject)(chartObjects.Item(1)); 
      existingChartObject.Copy(); 
      curSlide.Shapes.Paste(); 

     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.ToString()); 
     } 
     finally 
     { 
      MessageBox.Show("Finalizado"); 
     } 

    } 
} 

}

回答

0

与此代码问题解决了:

p = pptApp.ActivePresentation; 
slides = p.Slides; 
slides[3].Select(); 
Ppt.Slide slide3 = pptApp.ActiveWindow.View.Slide; 
相关问题