PowerPoint spezifische Informationen: Unterschied zwischen den Versionen

Aus VBA-wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Category:vba-wiki]]
== VBA in PowerPoint ==
== VBA in PowerPoint ==


Zeile 32: Zeile 33:
     <span style="Color:green">' PowerPoint kennt den Zustand, in dem NICHTS ausgewählt ist</span>
     <span style="Color:green">' PowerPoint kennt den Zustand, in dem NICHTS ausgewählt ist</span>
     <span style="Color:blue"> If </span>ActiveWindow<span style="Color:gray">.</span>Selection<span style="Color:gray">.</span>Type <span style="Color:gray">=</span> ppSelectionNone<span style="Color:blue"> Then Exit Sub</span>
     <span style="Color:blue"> If </span>ActiveWindow<span style="Color:gray">.</span>Selection<span style="Color:gray">.</span>Type <span style="Color:gray">=</span> ppSelectionNone<span style="Color:blue"> Then Exit Sub</span>
== Besonderheiten ==


== Beispiele ==
=== Zeilenumbrüche ===
 
In PowerPoint wird ein Zeilenumbruch durch einer vertikalen Tab erzeugt.


  Public Sub ExportCurrentSlide()
Dieser lässt sich durch
    Dim strPath As String
  Chr(11)
       
bzw.
    If ActivePresentation.Path = "" Then Exit Sub    ' Präsentation MUSS gespeichert sein!!!
vbVerticalTab
    strPath = BrowseToPath
in VBA einsetzen.
    If strPath = "" Then Exit Sub
    ActiveWindow.Selection.SlideRange.Item(1).PublishSlides strPath, True, True
End Sub


== Beispiele ==


  Public Sub ExportAllSlides()
  <span style="Color:blue"> Public Sub </span>ExportCurrentSlide<span style="Color:gray">()</span>
     Dim strPath As String
     <span style="Color:blue"> Dim </span>strPath<span style="Color:blue"> As String</span>
   
         
     strPath = BrowseToPath
     <span style="Color:blue"> If </span>ActivePresentation<span style="Color:gray">.</span>Path <span style="Color:gray">=</span> <span style="Color:gray">""</span><span style="Color:blue"> Then Exit Sub </span>  <span style="Color:green">' Präsentation MUSS gespeichert sein!!!</span>
    If strPath = "" Then Exit Sub
      strPath <span style="Color:gray">=</span> BrowseToPath
     If CanExportSlides(strPath) = False Then Exit Sub
     <span style="Color:blue"> If </span>strPath <span style="Color:gray">=</span> <span style="Color:gray">""</span><span style="Color:blue"> Then Exit Sub</span>
    ActivePresentation.PublishSlides strPath, True, True
      ActiveWindow<span style="Color:gray">.</span>Selection<span style="Color:gray">.</span>SlideRange<span style="Color:gray">.</span>Item<span style="Color:gray">(1).</span>PublishSlides strPath<span style="Color:gray">,</span><span style="Color:blue"> True</span><span style="Color:gray">,</span><span style="Color:blue"> True
End Sub
  End Sub</span>


<span style="Color:blue"> Public Sub </span>ExportAllSlides<span style="Color:gray">()</span>
    <span style="Color:blue"> Dim </span>strPath<span style="Color:blue"> As String</span>
     
      strPath <span style="Color:gray">=</span> BrowseToPath
    <span style="Color:blue"> If </span>strPath <span style="Color:gray">=</span> <span style="Color:gray">""</span><span style="Color:blue"> Then Exit Sub</span>
    <span style="Color:blue"> If </span>CanExportSlides<span style="Color:gray">(</span>strPath<span style="Color:gray">)</span> <span style="Color:gray">=</span><span style="Color:blue"> False Then Exit Sub</span>
      ActivePresentation<span style="Color:gray">.</span>PublishSlides strPath<span style="Color:gray">,</span><span style="Color:blue"> True</span><span style="Color:gray">,</span><span style="Color:blue"> True
  End Sub</span>


  Private Function CanExportSlides(ByVal strPath As String) As Boolean
  <span style="Color:blue"> Private Function </span>CanExportSlides<span style="Color:gray">(</span><span style="Color:blue">ByVal </span>strPath<span style="Color:blue"> As String</span><span style="Color:gray">)</span><span style="Color:blue"> As Boolean</span>
   
     
     If ActivePresentation.Path = "" Then
     <span style="Color:blue"> If </span>ActivePresentation<span style="Color:gray">.</span>Path <span style="Color:gray">=</span> <span style="Color:gray">""</span><span style="Color:blue"> Then</span>
        MsgBox "Bitte speichern Sie erst diese Präsentation, bevor Sie Folien exportieren."
          MsgBox <span style="Color:gray">"Bitte speichern Sie erst diese Präsentation, bevor Sie Folien exportieren."</span>
         Exit Function
         <span style="Color:blue"> Exit Function</span>
     End If
     <span style="Color:blue"> End If</span>
     If FileSystem.Dir(strPath, vbDirectory) = "" Then
     <span style="Color:blue"> If </span>FileSystem<span style="Color:gray">.</span>Dir<span style="Color:gray">(</span>strPath<span style="Color:gray">,</span> vbDirectory<span style="Color:gray">)</span> <span style="Color:gray">=</span> <span style="Color:gray">""</span><span style="Color:blue"> Then</span>
        MsgBox "Der Pfad '" & strPath & "' existiert nicht!"
          MsgBox <span style="Color:gray">"Der Pfad '"</span> & strPath & <span style="Color:gray">"' existiert nicht!"</span>
         Exit Function
         <span style="Color:blue"> Exit Function</span>
     End If
     <span style="Color:blue"> End If</span>
    CanExportSlides = True
      CanExportSlides <span style="Color:gray">=</span><span style="Color:blue"> True
End Function
  End Function</span>

Aktuelle Version vom 28. Januar 2023, 00:39 Uhr

VBA in PowerPoint

Makros aufzeichnen

Das Aufzeichnen von PowerPoint Makros ist seit Office 2007 nicht mehr möglich. Sie können sich dafür eine Entwicklungsumgebung für Office 2003 zulegen oder versuchen, in Excel aufgezeichnete Makros so anzupassen, dass sie in PowerPoint verwendet werden können. Die Aufzeichnungen von Arbeitsschritten mit Formen, Diagrammen und SmartArt können sehr gut für PowerPoint adaptiert werden.

PowerPoint Objekte

PowerPoint ist ähnlich hierarchisch aufgebaut wie Excel (Zelle liegt in Arbeitsblatt, Arbeitsblatt in Arbeitsmappe), kennt jedoch im Gegensatz zu Excel (und Word) Zustände, welche bei Excel und Word nicht berücksichtigt werden müssen, da sie nicht herbeigeführt werden können:

  • Excel
    • In Excel muss man lediglich prüfen, ob eine Arbeitsmappe geöffnet ist, denn daraus lässt sich ableiten, dass diese mindestens ein Arbeitsblatt und dieses wiederum die komplette Ausstattung an Zellen enthält.
    • Auch gibt es immer eine ActiveCell und eine ActiveSheet, sobald eine Arbeitsmappe geöffnet ist.
  • Word
    • In Word muss man ebenfalls lediglich prüfen, ob ein Dokument geöffnet ist. Daraus resultiert, dass auch immer auf einen Text in der Auswahl zugegriffen werden kann.
  • PowerPoint
    • Präsentationen können beliebig viele, aber auch keine Folien und Folien können beliebig viele, aber auch keine Formen enthalten!
    • PowerPoint kennt den Zustand, in dem nichts ausgewählt ist, obwohl die Präsentation Folien und Formen enthält!
Weitere Besonderheiten
  • Sämtliche Inhalte (Texte, Tabellen, Diagramme etc.) befinden sich in Formen, die mehr oder weniger spezialisiert sind.
  • Die Auswahl (Selection) ist dem aktuellen Fenster zugeordnet und ist ausschließlich hierrüber erreichbar.
Beispiele
    If Application.Presentations.Count < 1 Then Exit Sub
    If ActivePresentation.Slides.Count < 1 Then Exit Sub    ' PowerPoint kennt leere Präsentationen
    ' Erzeugt Fehler, wenn nichts ausgewählt ist:
 '   If ActiveWindow.Selection.ShapeRange.Count < 1 Then Exit Sub 
   
    ' PowerPoint kennt den Zustand, in dem NICHTS ausgewählt ist
    If ActiveWindow.Selection.Type = ppSelectionNone Then Exit Sub

Besonderheiten

Zeilenumbrüche

In PowerPoint wird ein Zeilenumbruch durch einer vertikalen Tab erzeugt.

Dieser lässt sich durch

Chr(11)

bzw.

vbVerticalTab

in VBA einsetzen.

Beispiele

 Public Sub ExportCurrentSlide()
     Dim strPath As String
         
     If ActivePresentation.Path = "" Then Exit Sub    ' Präsentation MUSS gespeichert sein!!!
     strPath = BrowseToPath
     If strPath = "" Then Exit Sub
     ActiveWindow.Selection.SlideRange.Item(1).PublishSlides strPath, True, True
 End Sub
 Public Sub ExportAllSlides()
     Dim strPath As String
     
     strPath = BrowseToPath
     If strPath = "" Then Exit Sub
     If CanExportSlides(strPath) = False Then Exit Sub
     ActivePresentation.PublishSlides strPath, True, True
 End Sub
 Private Function CanExportSlides(ByVal strPath As String) As Boolean
     
     If ActivePresentation.Path = "" Then
         MsgBox "Bitte speichern Sie erst diese Präsentation, bevor Sie Folien exportieren."
         Exit Function
     End If
     If FileSystem.Dir(strPath, vbDirectory) = "" Then
         MsgBox "Der Pfad '" & strPath & "' existiert nicht!"
         Exit Function
     End If
     CanExportSlides = True
 End Function