Propósito

✔ Programação GLOBAL® - Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog devem ser tratados como consultoria freelance. Queiram contatar-nos: brazilsalesforceeffectiveness@gmail.com | ESTE BLOG NÃO SE RESPONSABILIZA POR QUAISQUER DANOS PROVENIENTES DO USO DOS CÓDIGOS AQUI POSTADOS EM APLICAÇÕES PESSOAIS OU DE TERCEIROS.

.: Vitrine

Carregando artigos...

Views

Mostrando postagens com marcador Slides. Mostrar todas as postagens
Mostrando postagens com marcador Slides. Mostrar todas as postagens

VBA Powerpoint - Converta os textos dos Slides para Notas de Comentários - Convert PowerPoint TextBox Slides as Notes



Documentar as apresentações que preparamos é muito importante, e confesse, a maioria de nós nunca fazemos isso.

Mas imagine que pudéssemos automaticamente copiar os conteúdos das nossas Caixas de Texto como Notas de comentário nos Slides da nossa apresentação? Isso seria muito produtivo!

Pois então, agora podemos fazer isso:

Sub ExportTextBox_AsNotes() 
Dim oPPT As Presentation 
Dim oSlide As Slide 
Dim oSlideShape As Shape 
Dim oNotesShape As Shape 

Set oPPT = ActivePresentation 
Set oSlide = oPPT.Slides(3) 

For Each oSlideShape In oSlide.Shapes 
If oSlideShape.HasTextFrame Then 
Set oNotesShape = oSlide.NotesPage.Shapes.AddShape(msoShapeRectangle, 54, 442, 432, 324) ' 

oNotesShape.TextFrame.TextRange.Text = oSlideShape.TextFrame.TextRange.Text 
End If 
Next 

If Not oSlide Is Nothing Then Set oSlide = Nothing 
If Not oPPT Is Nothing Then Set oPPT = Nothing 
End Sub


Deixe os seus comentários! Envie este artigo, divulgue este link na sua rede social...


Tags: VBA, Notes, PowerPoint, Automate, Extract, Slides, TextBox


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

VBA Powerpoint - Divida uma grande apresentação em conjuntos menores - Break a presentation up into several smaller presentations

Blog Office VBA | Blog Excel | Blog Access |
Inline image 2

Um possível problema do seu Cliente seja o de ter inúmeras apresentações que se tornaram grandes demais para se fazer as manutenções tais como re-escrever os textos dos Slides, colar novas fotos e imagens, tabelas, argumentos, enfim, quaisquer alterações necessárias aos profissionais do MS Powerpoint.

Talvez você tenha uma grande apresentação que está ficando tão grande que leva uma eternidade para abrir e salvar cada vez que precisa fazer uma mudança, além de ser enorme para enviar por e-mail.

Que tal dividí-la em várias apresentações menores? Pode fazer isso manualmente, é claro, fazer várias cópias da sua apresentação original (certificando-se de que não vai perder nada), abrir uma a uma e apagar todos os Slides inúteis aquele respectivo conjunto. 

Sim isso pode ser muito bom! Mas será ainda melhor se  deixar o VBA fazer o trabalho para você automaticamente. 

Este código vai perguntar quantos slides quer por apresentação, e em seguida, dividirá a apresentação em várias sub-apresentações, cada uma com o número de slides que solicitou, cada uma nomeada para refletir os números de slides que contém. Por exemplo, sua apresentação BernardesSlides.PPT original contém 55 slides e a SplitFile a dividirá em 25 Slides por arquivo, terá: 
BernardesSlides_1-25.PPT
BernardesSlides_26-50.PPT
BernardesSlides_51-55.PPT 

Os novos arquivos serão salvos na mesma pasta que o arquivo original e o original não será alterado.


Sub SlideSplitFile()
    Dim lSlidesPerFile As Long
    Dim lTotalSlides As Long
    Dim oSourcePres As Presentation
    Dim otargetPres As Presentation
    Dim sFolder As String
    Dim sExt As String
    Dim sBaseName As String
    Dim lCounter As Long

    Dim lPresentationsCount As Long     ' how many will we split it into
    Dim x As Long
    Dim lWindowStart As Long
    Dim lWindowEnd As Long
    Dim sSplitPresName As String

    On Error GoTo ErrorHandler

    Set oSourcePres = ActivePresentation
    If Not oSourcePres.Saved Then
        MsgBox "Please save your presentation then try again"
        Exit Sub
    End If

    lSlidesPerFile = CLng(InputBox("How many slides per file?", "Split Presentation"))
    lTotalSlides = oSourcePres.Slides.Count
    sFolder = ActivePresentation.Path & "\"
    sExt = Mid$(ActivePresentation.Name, InStr(ActivePresentation.Name, ".") + 1)
    sBaseName = Mid$(ActivePresentation.Name, 1, InStr(ActivePresentation.Name, ".") - 1)

    If (lTotalSlides / lSlidesPerFile) - (lTotalSlides \ lSlidesPerFile) > 0 Then
        lPresentationsCount = lTotalSlides \ lSlidesPerFile + 1
    Else
        lPresentationsCount = lTotalSlides \ lSlidesPerFile
    End If

    If Not lTotalSlides > lSlidesPerFile Then
        MsgBox "There are fewer than " & CStr(lSlidesPerFile) & " slides in this presentation."
        Exit Sub
    End If

    For lCounter = 1 To lPresentationsCount

        ' which slides will we leave in the presentation?
        lWindowEnd = lSlidesPerFile * lCounter
        If lWindowEnd > oSourcePres.Slides.Count Then
            ' odd number of leftover slides in last presentation
            lWindowEnd = oSourcePres.Slides.Count
            lWindowStart = ((oSourcePres.Slides.Count \ lSlidesPerFile) * lSlidesPerFile) + 1
        Else
            lWindowStart = lWindowEnd - lSlidesPerFile + 1
        End If

        ' Make a copy of the presentation and open it
        sSplitPresName = sFolder & sBaseName & _
               "_" & CStr(lWindowStart) & "-" & CStr(lWindowEnd) & "." & sExt
        oSourcePres.SaveCopyAs sSplitPresName, ppSaveAsDefault
        Set otargetPres = Presentations.Open(sSplitPresName, , , True)

        With otargetPres
            For x = .Slides.Count To lWindowEnd + 1 Step -1
                .Slides(x).Delete
            Next
            For x = lWindowStart - 1 To 1 Step -1
                .Slides(x).Delete
            Next
            .Save
            .Close
        End With

    Next    ' lpresentationscount

NormalExit:
    Exit Sub
ErrorHandler:
    MsgBox "Error encountered"
    Resume NormalExit
End Sub

Reference: 

Tags: VBA, Powerpoint, Break, presentation, smaller, presentations, apresentações, dividir, apresentação, Slides




diHITT - Notícias