VBA Access - Exportando os Relatórios para o Powerpoint - Working with PowerPoint Presentations from Access Using Automation


















É interessante podermos criar uma apresentação com slides no PowerPoint a partir de dados contidos no MS Access.

Adicionalmente poderemos exibir e controlar a apresentação dos slides a partir de um formulário de acesso.

Durante o transcorrer deste artigo procure por soluções e explore maneiras de estender o modo de demostrá-las nos seus próprios aplicativos.


Talvez algum cliente peça-lhe que crie manualmente slides do Microsoft Office PowerPoint regularmente em base semanal com dados oriundos do Microsoft Office Access

Bem, não podemos exportar dados diretamente do Access para o PowerPoint. No entanto, podemos simplificar a tarefa, dependendo das nossas necessidades e desejo de escrevermos no VBA (Microsoft Visual Basic for Applications).

Analisaremos aqui duas formas de interação entre o Access e PowerPoint.

O primeiro exemplo ilustra como criar uma apresentação do PowerPoint a partir dos dados de uma tabela do Access usando automação.

O segundo exemplo mostra como exibir e manipular uma apresentação do PowerPoint existente num formulário do Access, usando também Automation. A Automação lhe dá a capacidade de controlar uma aplicação a partir de outra, manipulando as propriedades e métodos disponíveis no aplicativo controlado, respondendo a eventos.

Criando uma apresentação PowerPoint a partir de dados do Access


Este exemplo cria uma apresentação de slides usando os dados do MS Access. Um objeto Recordset é criado a partir dos dados de uma tabela. Os dados deste conjunto de registros é usado para preencher um slide da apresentação.

Faça o seguinte para criar a apresentação de slides:


1 - inicie o MS Access e abra um banco de dados.


2 - Crie um formulário com base em qualquer tabela, que contenha as seguintes características e objetos:

     Formulário: CreateFromAccessData
     Caption: PowerPoint Demo
     Botão de comando: cmdPowerPoint

          Nome: cmdPowerPoint
          Caption: PowerPoint Example

          Largura: +/- 5 cm


3 - No menu View, clique em código.

4 - No menu Ferramentas, clique em Referências.

5 - Nas caixas de referências disponíveis, clique na opção:
Microsoft PowerPoint 9.0 Object Library and Microsoft Office 9.0 Object Library

6 - Clique em OK para fechar a caixa de diálogo.

7 - Adicione a seguinte linha de código na seção de Declaração Geral:

Option Explicit

8 - Digite ou cole o seguinte código:

Sub cmdPowerPoint_Click()
    Dim db As Database, rs As Recordset
    Dim ppObj As PowerPoint.Application
    Dim ppPres As PowerPoint.Presentation
    
    On Error GoTo err_cmdOLEPowerPoint
    
    ' Open up a recordset on the Employees table.
    Set db = CurrentDb
    Set rs = db.OpenRecordset("Employees", dbOpenDynaset)
    
    ' Open up an instance of Powerpoint.
    Set ppObj = New PowerPoint.Application
    Set ppPres = ppObj.Presentations.Add
    
    ' Setup the set of slides and populate them with data from the
    ' set of records.
    With ppPres
        While Not rs.EOF
            With .Slides.Add(rs.AbsolutePosition + 1, ppLayoutTitle)
                .Shapes(1).TextFrame.TextRange.Text = "Hi!  Page " & rs.AbsolutePosition + 1
                .SlideShowTransition.EntryEffect = ppEffectFade
                With .Shapes(2).TextFrame.TextRange
                    .Text = CStr(rs.Fields("LastName").Value)
                    .Characters.Font.Color.RGB = RGB(255, 0, 255)
                    .Characters.Font.Shadow = True
                End With
                .Shapes(1).TextFrame.TextRange.Characters.Font.Size = 50
            End With
            rs.MoveNext
        Wend
    End With
    
    ' Run the show.
    ppPres.SlideShowSettings.Run
    
    Exit Sub
    
err_cmdOLEPowerPoint:
    MsgBox Err.Number & " " & Err.Description
End Sub



9 - Salve o formulário PowerPointDemo e abra-o como visualizar.

10 - Clique no exemplo do PowerPoint.

Note que a apresentação com os slides no PowerPoint será criada e exibida na tela. Clique a seta do mouse e a mova-se através dos slides.

Usando a Automação para exibir uma apresentação do PowerPoint

Este exemplo mostrará como exibirmos os slides do PowerPoint num formulário do Access. Esta técnica utiliza a automação do Access para abrir uma apresentação do PowerPoint conectada ao primeiro slide. Ao exibir os outros slides alteraremos a propriedade SourceItem, o que nos permitirá conectar-nos aos diferentes slides.

Observação: Para usarmos esta técnica, devemos ter tanto PowerPoint quanto o b instalados na estação de trabalho.Também precisaremos criar uma apresentação PowerPoint (. Ppt). Durante todo o processo, substitua o seguinte nome de arquivo com o nome e o caminho do arquivo: C: \ Program Files \ Microsoft Office \ Office \ Pptexample.ppt. Há um exemplo fornecido abaixo para download, ele  contém uma apresentação de amostra.

Este exemplo cria um formulário com cinco botões e um controle de objeto para vincular a uma apresentação PowerPoint que permitirá mover-se através dos seus slides.


Private Sub insertShow_Click()
    On Error GoTo insertShow_Click_Error
    
    ' Open PowerPoint
    Dim strPowerPointFile As String
    Dim pptobj As PowerPoint.Application
    Set pptobj = New PowerPoint.Application
    pptobj.Visible = True
    pptobj.WindowState = ppWindowMinimized
    
    Let strPowerPointFile = CurrentProject.Path & "\Access2PowerPoint.ppt"
    
    ' Fill a collection with all Slide IDs.
    With pptobj.Presentations.Open(strPowerPointFile)
        Set mcolSlideIDs = New Collection
        Dim ppSlide As PowerPoint.Slide
        For Each ppSlide In .Slides
            mcolSlideIDs.Add ppSlide.SlideID
        Next
        .Close
    End With
    
    ' Close PowerPoint
    pptobj.Quit
    Set pptobj = Nothing

    ' Make object frame visible and enable "navigation" buttons.
    pptFrame.Visible = True
    frstSlide.Enabled = True
    lastSlide.Enabled = True
    nextSlide.Enabled = True
    previousSlide.Enabled = True

    ' Specify OLE Class, Type, SourceDoc, SourceItem and other properties.
    With pptFrame
        .Class = "Microsoft Powerpoint Slide"
        .OLETypeAllowed = acOLELinked
        .SourceDoc = strPowerPointFile
    End With
    SetSlide 1
    
    frstSlide.SetFocus
    insertShow.Enabled = False
    
    Exit Sub

insertShow_Click_Error:
    MsgBox Err.Number & " " & Err.Description
    Exit Sub
End Sub

Private Sub SetSlide(ByVal ID As Integer)
    On Error GoTo ErrorHandler
    
    Select Case ID
    Case Is > mcolSlideIDs.Count
        MsgBox "This is the last slide."
    Case 0
        MsgBox "This is the first slide."
    Case Else
        mlngSlideIndex = ID
        With pptFrame
            .SourceItem = mcolSlideIDs(mlngSlideIndex)
            .Action = acOLECreateLink
        End With
    End Select

    Exit Sub
ErrorHandler:
    MsgBox Err.Number & " " & Err.Description
    Exit Sub
End Sub

Nenhum comentário:

Postar um comentário

diHITT - Notícias