2017-10-17 3 views
2

Da ich mit dem vorliegenden Problem leichte Fortschritte gemacht habe, seit ich diese Frage gestellt habe, habe ich es für notwendig gehalten, es in zwei Teile aufzuteilen, um Klarheit zu bewahren.Wie kann ich Formen (Farben) in PowerPoint mit Python und win32com.client bearbeiten?


  1. Wie kann ich Form Farben in Powerpoint mit Python und win32com.client manipulieren?
  2. Wie kann ich com-Objekte in Python mit dir() untersuchen?

1. Manipulieren Form Farben in Powerpoint mit Python

Es gibt einige Beispiele, wie Powerpoint-Folien mit der pptx Bibliothekhere zu bearbeiten. Es fällt mir jedoch wesentlich leichter, eine aktive PowerPoint-Präsentation zu manipulieren, indem win32com.client wie beschrieben here verwendet wird. Anhand eines Beispiels aus Microsoft Developer Network ich gefunden habe, dass ich leicht Teile der Funktionalität dieses VBA-Schnipsel ...

With ActivePresentation.Slides(1).Shapes(1) 
    With .TextFrame.TextRange.Font 
     .Size = 48 
     .Name = "Palatino" 
     .Bold = True 
     .Color.RGB = RGB(255, 127, 255) 
    End With 
End With 

... mit diesem Python-Schnipsel replizieren kann:

import win32com.client 
Application = win32com.client.Dispatch("PowerPoint.Application") 
Presentation = Application.Activepresentation 

slidenr = Presentation.Slides.Count  
slide = Presentation.slides(slidenr) 

shape1 = slide.Shapes.AddTextbox(Orientation=0x1,Left=100,Top=100,Width=100,Height=100) 
shape1.TextFrame.TextRange.Text='Hello, world'  

#Manipulate font size, name and boldness 
shape1.TextFrame.TextRange.Font.Size=20 
shape1.TextFrame.TextRange.Characters(1, 4).Font.Name = "Times New Roman" 
shape1.TextFrame.TextRange.Font.Bold=True 

Hier Ich bin in der Lage, Schriftgröße und Namen zu manipulieren. Ich kann die Ausrichtung des Textfelds auch ändern, indem ich Orientation=0x1 zu Orientation=0x5 in shape1 = slide.Shapes.AddTextbox(Orientation=0x1,Left=100,Top=100,Width=100,Height=100) ändere.

Was jedoch unmöglich erscheint, ist das Bearbeiten der Box- oder Schriftfarbe.

Dies funktioniert nicht:

shape1.TextFrame.TextRange.Font.Color.RGB = RGB(255, 127, 255) 

Fehlermeldung:

enter image description here

ich große Hoffnungen hatte dieses Problem beheben, indem Sie einige RGB-Funktionalität Import nach Informationen über pypi.python.org

Aber Ich habe auch hier Probleme mit pip install colour:

enter image description here

Inzwischen ein bisschen Ich bin auf alle Konten verloren, so groß wäre keine Hinweise auf jedem Weg Farben zu manipulieren!

2. Objekte in Python Inspizieren dir()

In meinen Versuchen mit dieser lästigen Farben zu verwalten, begann ich die Ausgabe von dir(shape1.TextFrame), dir(shape1.TextFrame.Textrange) und so weiter inspizieren. Zu meiner Enttäuschung konnte ich nichts über Farben finden, nicht einmal Font, obwohl Font für Manipulationen eindeutig zugänglich ist.

Also ist meine zweite Frage: Ist das nicht die Art, diese Formen überhaupt zu inspizieren und zu manipulieren? Und wie könnte ich das richtige Objekt (oder Methode?) um shape1 weiter zu manipulieren? Ich habe mir die PowerPoint objectmodel angesehen, aber mit wenig Erfolg.

Vielen Dank für Anregungen!

Antwort

1

Sie können die globalen VBA-Funktion leicht in Ihrem Python-Skript

def RGB(red, green, blue): 
    assert 0 <= red <=255  
    assert 0 <= green <=255 
    assert 0 <= blue <=255 
    return red + (green << 8) + (blue << 16) 

über Ihre zweite Frage neu zu erstellen. Der beste Ort, um über diese Objekte zu lernen, ist der Excel-Makroobjekt-Browser. Drücken Sie im Makro-Editor F2, und filtern Sie dann nach der Powerpoint-Bibliothek. Dann können Sie das Objektmodell nur auf Powerpoint

Object Browser

+0

Sie im Zusammenhang suchen und erkunden Dank! Dies scheint gut zu funktionieren, außer dass die Farben etwas durcheinander sind. (255,0,0) ist rot, (0,255,0) ist grün und (0,0,255) sollte blau sein, wird aber grün. Irgendwelche Gedanken warum? – vestland

+1

Mein Fehler, überprüfen Sie bitte die aktualisierte Funktion –

+0

Über die zweite Frage, gibt es wirklich keine Möglichkeit, diese Objekte/Methoden in Python zu finden? – vestland

Verwandte Themen