Newsgroup: it.comp.appl.access
Titolo: [OT] ma non troppo. TextFrame.AutoSice = msoAutoSizeTextToFitShape non funziona!

Buon giorno,
da un modulo di access "piloto" delle slide in powerpoint e dinamicamente cambio il testo di alcune caselle impostando che il font size venga modificato adattandosi alle dimensioni frefissate del frame. Ma nun funziona correttamente.
L'assegnazione della proprietà avviente con un codice del tipo:
 
ActivePresentation.Slides(1).Shapes(1).TextFrame2.AutoSize = msoAutoSizeTextToFitShape
 
Il problema è che quando modifico il testo
 
ActivePresentation.Slides(1).Shapes(1).TextFrame2.TextRange.Text = "Qui ci scrivo quello che voglio"
 
Il font size non si adatta per niene A MENO CHE manualmente ci clicco all'interno del file powerpoint e il testo MAGICAMENTE si adatta.
 
Ho provato anche ad eseguire il metodo Select esposto dall'oggetto TextFrame2 ma niente da fare.
 
A qualcuno di voi è capitato di imbattersi in questo bug?
 
Ho provato con workaround con DoEvents ma non va, non va e non va! Accidenti!
 
Access 2010 - Powerpoint 2010
 
Devo empiricamente impostare manualmente il font size sulla base della lunghezza della stringa?
 
Spero in vostro aiuto.
Grazie
Daniele

prova a vedere
 
http://www.vbaexpress.com/forum/showthread.php?53117-Looping-through-selected-presentations-and-fitting-text-to-shapes
 

 
http://www.vbaexpress.com/forum/showthread.php?53117-Looping-through-selected-presentations-and-fitting-text-to-shapes
 
 
Niente alla fine del thread si conclude con un "I don't know why, sorry"
Anche io ho fatto le stesse prove di cambiare il Text di impostare l'autosize a valore 0 e poi al valore necessario.
Nessun risultato.
Grazie cmq.


Prova a leggere quì:
http://www.vbaexpress.com/forum/showthread.php?44977-Textframe2-autowrap-amp-AutoSize
 
 
@Alex


Anche qui dicono "non so perché accade questo".
Un warkaround o meglio conosciuto come tappabuchi è quello di fare lo sporco lavoro con una funzione che incollo dal thread.
 
In pratica la funzione fitMe riduce il fontsize di 1 finché boundheight (presumo l'altezza effettiva del testo) non raggiunge l'altezza della casella di testo.
 
Mi "repelle" usare questa funzione ma non credo di avere alternative.
 
Sarà fantastico quando il powerpoint sarà salvato (inavvertitamente) e il fontsize non è più quello originale! Per cui dovrò preoccuparmi di partire da un font size che devo conoscere a priori per ogni casella di testo!
Un bel divertimento! :)
 
Grazie Alex!!
 
Daniele
 
Sub getText()
With ActivePresentation.Slides(1).Shapes("Slide-Title")
.TextFrame2.WordWrap = msoTrue
.TextFrame2.AutoSize = msoAutoSizeTextToFitShape
.TextFrame2.TextRange.Text = "mega long string of text goes here instead of the Excel TexT. Make it longer if you want!" 'XLBookL.Sheets(NameOfTab).Range(cCats & CStr(CurrentQST + CatNum + 1)) & ": " & _
XLBookL.Sheets(NameOfTab).Range(cQsTxt & CStr(CurrentQST + CatNum + 1)) ' Enter category + current Qs. Text
Call fitMe(.TextFrame2.TextRange, ActivePresentation.Slides(1).Shapes("Slide-Title"))
End With
End Sub
Function fitMe(otxtR As Variant, oshp As Shape)
While otxtR.BoundHeight > oshp.Height
otxtR.Font.Size = otxtR.Font.Size - 1
Wend
End Function

Ciao Daniele, come sai i WorkAround sono un po un MUST... in ogni caso... metti un DoEvents in quel While...Wend mi pare pericoloso così...
 
Hai provato a fare semplicemente(spesso queste ridefinizioni forzano il REPAINT):
otxtR.Font.Size = otxtR.Font.Size
 
@Alex


Una cosa del genere ....Text = ....Text
Solo cliccandoci su si risveglia il ppt addormentato
Niente da fare
Thanks