2009-06-08 19 views
5

Sto cercando di utilizzare VBA per inserire del testo in una presentazione PowerPoint TextRange, io uso qualcosa di simile:Applicare formattazione dei caratteri in PowerPoint Testo Programatically

ActiveWindow.Selection.SlideRange.Shapes("rec1").TextFrame.TextRange.Text = "Hi" 

Tuttavia, non riesco a capire come applicare grassetto , corsivo e sottolineato in modo programmatico (non vedo una proprietà .RichText o qualcosa di simile).

Quello che ho è un semplice testo HTML con testo in grassetto, corsivo e sottolineato che vorrei convertire.

Qualcuno sa come fare?

+0

Penso di aver risolto tutti i tuoi dubbi nella mia risposta modificata qui sotto. –

+0

cercando di capire come far funzionare il tuo esempio nel mio script. Penso che (Start: = 2, Length: = 3) stia scaricando VBScript, anche se sembra funzionare in VBA (colpa mia - avrei dovuto specificare che stavo usando VBScript). Sembra che dovrebbe funzionare, anche se è un dolore - vorrei che implementassero un modo migliore di questo. Pubblicheremo indietro una volta che sarò in grado di farlo funzionare secondo le necessità. Grazie - – OneNerd

+0

Ho ricollocato il tuo post per riflettere che stai utilizzando VBScript. Mi interessa sapere come risolvi questo problema. –

risposta

7

Questo è facilmente realizzabile utilizzando s' il TextRangeCharacters, Words, Sentences, Runs e Paragraphs oggetti e poi è Font oggetto per impostare grassetto, sottolineato e corsivo (tra le altre proprietà). Ad esempio:

Sub setTextDetails() 
    Dim tr As TextRange 
    Set tr = ActiveWindow.Selection.SlideRange.Shapes(1).TextFrame.TextRange 
     With tr 
      .Text = "Hi There Buddy!" 
      .Words(1).Font.Bold = msoTrue 
      .Runs(1).Font.Italic = msoTrue 
      .Paragraphs(1).Font.Underline = msoTrue 
     End With 
End Sub 
4

Provare a cercare MSDN's documentation su TextRange object. Contiene esempi su come accedere alle proprietà Font dell'oggetto TextRange.

EDIT: è possibile accedere a cose come il grassetto e corsivo di codice in questo modo:

TextRange.Font.Bold = msoTrue 

EDIT EDIT: Ci sono diversi metodi con cui è possibile selezionare solo alcune testo in un intervallo di testo. Vedere la seguente:

Secondo i sames da this link, è possibile selezionare una parte del testo utilizzando uno di questi metodi e imposta il carattere a livello di codice. Ad esempio:

Application.ActiveDocument.Pages(1).Shapes(2) _ 
.TextFrame.TextRange.Words(Start:=2, Length:=3) _ 
.Font.Bold = True 

Questo esempio è stato preso dal collegamento Metodo parole.

+1

per quanto posso dire, che indirizza l'INTERO campo di testo, non le singole parole all'interno dell'intervallo di testo. – OneNerd

3

Oltre alla risposta di cui sopra, dovresti provare a nominare gli oggetti che cambierai, dal momento che selezionarli nel mezzo di una presentazione potrebbe far sì che PowerPoint si comporti in modo strano. Crea un nuovo oggetto TextRange e impostalo in questo modo.

dim mytextrange As TextRange 
Set mytextrange = ActiveDocument.Pages(1).Shapes(2).TextFrame.TextRange 
mytextrange.Words... 
+0

Sì, lo faccio già (semplifica il lavoro con gli oggetti). Grazie - – OneNerd

Problemi correlati