Comme j'ai fait de légers progrès avec le problème actuel depuis que j'ai posté cette question, j'ai trouvé nécessaire de le diviser en deux parties pour maintenir la clarté.Comment puis-je manipuler des formes (couleurs) dans PowerPoint en utilisant Python et win32com.client?
- Comment puis-je manipuler les couleurs de forme dans PowerPoint en utilisant Python et win32com.client? Comment puis-je inspecter des objets com en Python en utilisant
dir()
?
1. Manipulez les couleurs de forme dans PowerPoint en utilisant Python
Il y a quelques exemples sur la façon de modifier des diapositives PowerPoint en utilisant la bibliothèque pptxhere. Cependant, je trouve beaucoup plus facile de manipuler une présentation PowerPoint active en utilisant win32com.client comme décrit here. En utilisant un exemple de Microsoft Developer Network que j'ai trouvé que je peux facilement reproduire parties de la fonctionnalité de cet extrait VBA ...
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
... avec cet extrait de Python:
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
ici Je suis capable de manipuler la taille et le nom de la police. Je peux également changer l'orientation de la zone de texte en changeant Orientation=0x1
en Orientation=0x5
en shape1 = slide.Shapes.AddTextbox(Orientation=0x1,Left=100,Top=100,Width=100,Height=100)
.
Ce qui semble impossible, c'est de modifier la couleur de la boîte ou de la police.
Cela ne fonctionne pas:
shape1.TextFrame.TextRange.Font.Color.RGB = RGB(255, 127, 255)
Message d'erreur:
Je attendais de résoudre ce problème en importer certaines fonctionnalités RVB suivant les informations sur pypi.python.org
Mais J'ai des problèmes ici aussi avec pip install colour
:
Maintenant, je suis un peu perdu sur tous les comptes, de sorte que toutes les allusions à un moyen de manipulation des couleurs serait génial!
2. Inspecter les objets en Python en utilisant dir()
Dans mes tentatives pour gérer ces couleurs embêtants, j'ai commencé à inspecter la sortie de dir(shape1.TextFrame)
, dir(shape1.TextFrame.Textrange)
et ainsi de suite. À ma grande déception, je n'ai rien trouvé à propos des couleurs, ni même de Font, bien que Font soit clairement accessible pour la manipulation. Donc, ma deuxième question est la suivante: n'est-ce pas la façon d'inspecter et de manipuler ces formes du tout? Et comment pourrais-je trouver le bon objet (ou méthode?) pour manipuler shape1 plus loin? J'ai regardé le PowerPoint objectmodel, mais avec peu de succès.
Merci pour vos suggestions!
Merci! Cela semble fonctionner correctement, sauf qu'il semble que les couleurs sont un peu foiré. (255,0,0) est rouge, (0,255,0) est vert et (0,0255) devrait être bleu, mais vert. Des pensées sur pourquoi? – vestland
Mon erreur, S'il vous plaît vérifier la fonction mise à jour –
A propos de la 2ème question, est-il vraiment impossible de localiser ces objets/méthodes dans Python? – vestland