none
Gerar PowerPoint automaticamente via Planilha Excel

    Question

  • Caros,
    Tenho a seguinte situação:
    1 planilha excel com dezenas de gráficos, que é gerada mensalmente via um sistema java.

    A partir desta planilha preciso gerar um .doc e um .ppt, isto atualmente é feito manualmente, o que eu gostaria é de automatizar estas tarefas, ou seja, a partir do excel gerar o .ppt e o doc.

    Alguem tem alguma idéia da melhor forma de solucionar este problema?
    Atualmente estamos utilizando o MS-Office 2003

    obrigado!
    Friday, February 16, 2007 5:09 PM

Answers

  • Caro Cesar,

    Para que vc possa fazer isso automaticamente vc precisa seguir os procedimentos abaixo:

    1. Abrir a planilha que contém os gráficos, Abrir o documento do Word que irá receber os gráficos e Abrir a apresentação do Powerpoint que receberá também os gráficos.

    Se o gráfico estiver como uma planilha de Grafico: ex: Graf1 ....Clique na planilha que contém esse gráfico e dê o comando copiar.

    Vá para o Word e acione o Menu Editar .....Colar Especial .....Colar Vínculo .....e Gráfico do Excel.

    Vá para O Powerpoint e acione o Menu Editar ...Colar especial.....Colar Vínculo.....Objeto Gráfico do excel.

    Pronto agora e só salvar o arquivo do Word, PowerPoint e Excell.

    Quando vc alterar os dados no excel para gerar novos gráficos, e só abrir o arquivo do Word e Powerpoint que contém os objetos incorporados que ele irá perguntar se vc deseja atualizar os dados, e vc dirá que sim pronto vc estara com o documento do Word e do Powerpoint sempre atualizados de acordo com os últimos graficos,

     

    Obs. Faça esse procedimento para cada gráfico que vc quiser incorporar no Word e Power.

     

    []s

     

    Souzac

     

     

     

     

     

    Friday, March 02, 2007 3:07 AM
  • Ola Souza,

    Obrigado pela sua atenção, mas o que procuro é automatizar o processo, não quero clicar em copiar e colar.

    Já consegui automatizar o ppt, estou atrás agora da forma de automatizar a geração do .doc.

     

    Veja código para automatizar o envio de gráficos para um .ppt:

     

    Private Sub PushAllExcelPlotsToPowerPoint()


    '**********************************************************************************
    ' This procedure pushes all Excel charts in the active workbook to
    PowerPoint slides
    ' * If a PowerPoint presentation is not open, PowerPoint will be
    launched (if
    ' necessary), a new Powerpoint presentation will be created, and the
    slides
    ' will be added with all of the Excel charts.
    ' * If PowerPoint is already open, the Excel charts will be appended to
    the
    ' active PowerPoint presentation.
    ' * Chart names will be used for slide titles.

    '**********************************************************************************

    Dim PowerPointConn As Object
    Dim CurrentChart As Excel.Chart
    Dim SlideNumber As Integer, INI_File As String

    If ActiveChart Is Nothing Then End

    ' determine if custom or default INI file should be used
    INI_File = IniFileName

    On Error Resume Next
    Set PowerPointConn = GetObject(, "PowerPoint.Application")
    On Error GoTo 0
    If PowerPointConn Is Nothing Then Set PowerPointConn =
    CreateObject("PowerPoint.Application")
    If PowerPointConn.Presentations.Count = 0 Then
    PowerPointConn.Presentations.Add msoTrue
    PowerPointConn.Visible = msoTrue

    SlideNumber = PowerPointConn.ActivePresentation.Slides.Count + 1

    For Each CurrentChart In Charts
    CurrentChart.CopyPicture
    PowerPointConn.ActivePresentation.Slides.Add Index:=SlideNumber,
    Layout:=11 ' ppLayoutTitleOnly = 11
    PowerPointConn.ActivePresentation.Slides(SlideNumber).Shapes.Paste

    PowerPointConn.ActivePresentation.Slides(SlideNumber).Shapes(1).TextFrame.TextRange.Text = CurrentChart.Name

    PowerPointConn.ActivePresentation.Slides(SlideNumber).Shapes(2).Height =
    Val(GetPrivateProfileString32(INI_File, "GENERAL", "PPT Plot Height", "385"))
    PowerPointConn.ActivePresentation.Slides(SlideNumber).Shapes(2).Top
    = Val(GetPrivateProfileString32(INI_File, "GENERAL", "PPT Plot Top", "115"))
    PowerPointConn.ActivePresentation.Slides(SlideNumber).Shapes(2).Left
    = Val(GetPrivateProfileString32(INI_File, "GENERAL", "PPT Plot Left", "85"))
    SlideNumber = SlideNumber + 1
    Next CurrentChart

    Set PowerPointConn = Nothing

    End Sub

    Friday, March 02, 2007 12:19 PM
  • Oi Cesar,

     

    este tópico deveria ser postado no MSDN Brasil, lá conseguirá mais rapidamente respostas sobre desenvolvimento e VBA.

    A lógica do código a ser usado é a mesma, porém você deverá recorrer ao modelo de objeto do Word:

     

    Dim WordApp As Object

    Dim wdDoc As Object

    Set WordApp = CreateObject("Word.Application")

    Set wdDoc = WordApp.Documents.Add

    WordApp.Visible=true

    ' o resto é copiar e colar, como fez no código do PowerPoint

    Saturday, March 03, 2007 12:28 PM

All replies

  • Caro Cesar,

    Para que vc possa fazer isso automaticamente vc precisa seguir os procedimentos abaixo:

    1. Abrir a planilha que contém os gráficos, Abrir o documento do Word que irá receber os gráficos e Abrir a apresentação do Powerpoint que receberá também os gráficos.

    Se o gráfico estiver como uma planilha de Grafico: ex: Graf1 ....Clique na planilha que contém esse gráfico e dê o comando copiar.

    Vá para o Word e acione o Menu Editar .....Colar Especial .....Colar Vínculo .....e Gráfico do Excel.

    Vá para O Powerpoint e acione o Menu Editar ...Colar especial.....Colar Vínculo.....Objeto Gráfico do excel.

    Pronto agora e só salvar o arquivo do Word, PowerPoint e Excell.

    Quando vc alterar os dados no excel para gerar novos gráficos, e só abrir o arquivo do Word e Powerpoint que contém os objetos incorporados que ele irá perguntar se vc deseja atualizar os dados, e vc dirá que sim pronto vc estara com o documento do Word e do Powerpoint sempre atualizados de acordo com os últimos graficos,

     

    Obs. Faça esse procedimento para cada gráfico que vc quiser incorporar no Word e Power.

     

    []s

     

    Souzac

     

     

     

     

     

    Friday, March 02, 2007 3:07 AM
  • Ola Souza,

    Obrigado pela sua atenção, mas o que procuro é automatizar o processo, não quero clicar em copiar e colar.

    Já consegui automatizar o ppt, estou atrás agora da forma de automatizar a geração do .doc.

     

    Veja código para automatizar o envio de gráficos para um .ppt:

     

    Private Sub PushAllExcelPlotsToPowerPoint()


    '**********************************************************************************
    ' This procedure pushes all Excel charts in the active workbook to
    PowerPoint slides
    ' * If a PowerPoint presentation is not open, PowerPoint will be
    launched (if
    ' necessary), a new Powerpoint presentation will be created, and the
    slides
    ' will be added with all of the Excel charts.
    ' * If PowerPoint is already open, the Excel charts will be appended to
    the
    ' active PowerPoint presentation.
    ' * Chart names will be used for slide titles.

    '**********************************************************************************

    Dim PowerPointConn As Object
    Dim CurrentChart As Excel.Chart
    Dim SlideNumber As Integer, INI_File As String

    If ActiveChart Is Nothing Then End

    ' determine if custom or default INI file should be used
    INI_File = IniFileName

    On Error Resume Next
    Set PowerPointConn = GetObject(, "PowerPoint.Application")
    On Error GoTo 0
    If PowerPointConn Is Nothing Then Set PowerPointConn =
    CreateObject("PowerPoint.Application")
    If PowerPointConn.Presentations.Count = 0 Then
    PowerPointConn.Presentations.Add msoTrue
    PowerPointConn.Visible = msoTrue

    SlideNumber = PowerPointConn.ActivePresentation.Slides.Count + 1

    For Each CurrentChart In Charts
    CurrentChart.CopyPicture
    PowerPointConn.ActivePresentation.Slides.Add Index:=SlideNumber,
    Layout:=11 ' ppLayoutTitleOnly = 11
    PowerPointConn.ActivePresentation.Slides(SlideNumber).Shapes.Paste

    PowerPointConn.ActivePresentation.Slides(SlideNumber).Shapes(1).TextFrame.TextRange.Text = CurrentChart.Name

    PowerPointConn.ActivePresentation.Slides(SlideNumber).Shapes(2).Height =
    Val(GetPrivateProfileString32(INI_File, "GENERAL", "PPT Plot Height", "385"))
    PowerPointConn.ActivePresentation.Slides(SlideNumber).Shapes(2).Top
    = Val(GetPrivateProfileString32(INI_File, "GENERAL", "PPT Plot Top", "115"))
    PowerPointConn.ActivePresentation.Slides(SlideNumber).Shapes(2).Left
    = Val(GetPrivateProfileString32(INI_File, "GENERAL", "PPT Plot Left", "85"))
    SlideNumber = SlideNumber + 1
    Next CurrentChart

    Set PowerPointConn = Nothing

    End Sub

    Friday, March 02, 2007 12:19 PM
  • Olá Cesar, então tem que ser msm via VBA, automatizando assim todo o processo, eu estava pensando que os gráficos seriam sempre os mesmos mas com valores diferentes no final de cada mes.

    []s

    Friday, March 02, 2007 10:54 PM
  • Oi Cesar,

     

    este tópico deveria ser postado no MSDN Brasil, lá conseguirá mais rapidamente respostas sobre desenvolvimento e VBA.

    A lógica do código a ser usado é a mesma, porém você deverá recorrer ao modelo de objeto do Word:

     

    Dim WordApp As Object

    Dim wdDoc As Object

    Set WordApp = CreateObject("Word.Application")

    Set wdDoc = WordApp.Documents.Add

    WordApp.Visible=true

    ' o resto é copiar e colar, como fez no código do PowerPoint

    Saturday, March 03, 2007 12:28 PM
  • Este post nao obteve uma solução exata, estou encerrando este post mesmo que seja antigo por questão de organização, selecionando a resposta que mais se aproxima da solução.

    Se houver duvidas sobre este post futuramente, recomenda abrir uma nova thread com sua duvida.
    Diego Piffaretti- www.mundotecnologico.net
    Thursday, March 31, 2011 1:22 AM