2016-06-27 3 views
0

Ich habe das schon eine Weile untersucht und habe keinen Hintergrund gefunden, ob Powerpoint VBA feststellen kann, ob ein Objekt (Textfeld oder Tabelle) außerhalb der Grenzen des Seitenabmessungen.Ermitteln, ob ein Powerpoint - Textfeld die Seitengröße überschreitet

Die spezifische Anwendung, die ich zu verwalten versuche, ist, wenn ich Text in eine PPT-Tabelle aus Excel durch einen Fund/Ersetzung von bestimmten Datenmarkierungen, kenne ich nicht die spezifischen Dimensionen des Textes, so kann ich überlaufen die Seitengrenze.

Ich kann den Text auch nicht verkleinern, da ich die Designtreue der Schriftgröße beibehalten muss.

Ich möchte versuchen, zu messen, wenn dieser Überlauf passiert und VB verwenden, um eine neue Seite zu erstellen, auf der ich weiterhin meinen Text aus Excel fließen kann.

Im Moment mache ich dies, indem ich die Seitenvorlage auf 15 Zeilen limitieren und dann manuell den Überlauf der Seite anpassen. Könnte meine einzige Option sein, aber ich dachte, ich würde die Frage stellen.

+0

ich die Seitenvorlage nehme und es bei einer bestimmten Anzahl von Zeilen Fixieren Sie dann die Datenaufteilungs ich über die Reihen haben (zum Beispiel 15 in Beispiel unten). Wenn ich dann die letzte Zeile auffülle, verschiebe ich die Daten auf die nächste Seite. 'k = (LastRow/15) + 1 'die Zeilen von 15 (Zeilen, die eine Seite passen) teilen' 'Wenn Marker wie "@ PROG1. *" Dann' neue row' starten ' Wenn InStr (1, CStr ((i - 2)/15), ".") = 0 Dann 'neue Seite beginnen' 'k = k + 1 'den Seitenzähler inkrementieren' ' End If' 'End If ' –

Antwort

0

Dies sollte Ihnen den Einstieg:

Option Explicit 

Sub TextboxCheck() 

Dim shp As Shape 
Dim sld As Slide 
Dim sldHeight As Long 

sldHeight = ActivePresentation.PageSetup.SlideHeight 

For Each sld In ActivePresentation.Slides 
    For Each shp In sld.Shapes 
     If shp.Type = msoTextBox Then 
      If shp.Top + shp.Height > sldHeight Then 
       'Add your code here for moving the text to a new slide 
      End If 
     End If 
    Next shp 
Next sld 

End Sub 
+0

Danke, ja, ich wusste nicht über' ActivePresentation.PageSetup.SlideHeight' Das sollte den Trick tun. –

+0

Ich bin froh, dass ich helfen konnte! – TheEngineer

+1

Solange das Textfeld erweitert wird, um zusätzlichen Text aufzunehmen, sollte das funktionieren. Wenn nicht, gibt shp.height usw. Ihnen die Größe des Textfelds aber nicht des Textes, der aus dem Textfeld herauslaufen könnte. Sie können auch die shp.TextFrame.TextRange.BoundTop, BoundHeight usw. betrachten. Diese geben Ihnen die tatsächlichen Dimensionen des Textes, unabhängig von der Form, die ihn enthält (oder dass er ausläuft). –

Verwandte Themen