Ho ricevuto una presentazione di PowerPoint con dozzine di diapositive, ognuna con un numero di caselle di testo. Sebbene la presentazione sia scritta in inglese, la lingua per il controllo ortografico è impostata su Francese canadese. Sto cercando di cambiare la lingua in inglese, ma anche se seleziono tutte le diapositive e seleziono un nuovo elemento nella finestra di dialogo Lingua, la lingua delle caselle di testo rimane la stessa. Quindi devo scorrere per slide selezionando le caselle di testo e poi cambiando la lingua individualmente.
C'è un modo migliore per farlo?
La versione di PowerPoint che ho installato è 2002 SP3.
Questa discussione contiene la risposta che ha funzionato per me.
I passi che ho seguito sono stati:
Incolla questo codice sul pannello di destra e salva la macro:
Option Explicit
Public Sub ChangeSpellCheckingLanguage()
Dim j As Integer, k As Integer, scount As Integer, fcount As Integer
scount = ActivePresentation.Slides.Count
For j = 1 To scount
fcount = ActivePresentation.Slides(j).Shapes.Count
For k = 1 To fcount
If ActivePresentation.Slides(j).Shapes(k).HasTextFrame Then
ActivePresentation.Slides(j).Shapes(k) _
.TextFrame.TextRange.LanguageID = msoLanguageIDEnglishAUS
End If
Next k
Next j
End Sub
msoLanguageIDEnglishAUS
può essere sostituito da qualsiasi lingua desiderata. L'elenco completo delle lingue può essere trovato qui .
Esegui la macro (premendo F5 all'interno dell'editor o selezionando Strumenti, Macro, Macro, ChangeSpellCheckingLanguage e facendo clic su Esegui).
Dopo che tutti gli elementi di testo all'interno della presentazione avranno il nuovo linguaggio di compitazione.
So che una risposta è già stata accettata (che ho dato +1 perché funziona e è ben scritta), ma per alcune persone l'idea di creare, salvare, usare una macro potrebbe essere troppo spaventosa (o potrebbero avere impostazioni di sicurezza in luogo che rende difficile raggiungerlo). Quindi una soluzione più semplice è usare la normale funzionalità integrata per farlo. Il trucco è di essere in grado di selezionare tutti gli oggetti su tutte le diapositive contemporaneamente, piuttosto che le diapositive stesse, e questo è facilmente raggiungibile nella vista Struttura (purtroppo una funzionalità sottoutilizzata, ma ideale per riorganizzare un mazzo di diapositive, promuovendo e degradando interi blocchi, ad esempio proiettili> nuove diapositive o viceversa).
Non ho PowerPoint 2002 ("XP"), quindi non sono sicuro se è necessario seguire le istruzioni per il 2000 o per il 2003, quindi copro entrambi qui:
Nelle versioni precedenti, assicurati di avere la barra degli strumenti Struttura visibile (View > Toolbars > Outlining) e fare clic su Expand all pulsante (le versioni successive consentono di ottenere ciò tramite clic destro).
Lavoro fatto.
Allo stesso modo quando hai tutto selezionato puoi cambiare altre cose come font, colori, ecc. Anche se ovviamente in molti casi è meglio cambiare il master della diapositiva, una presentazione che ha avuto molti editor può avere un sacco di set di formattazione "hard" che devia dal master sottostante e deve essere ripristinato per essere coerente. Puoi anche reimpostare le diapositive individuali nello stile principale, ma ciò potrebbe comportare il movimento dei segnaposto, il che potrebbe non essere opportuno in alcune situazioni.
Dopo molte presentazioni in cui l'ho fatto a mano o ho usato una macro one-off, alla fine ho rotto e l'ho trasformato in un vero e proprio add-in per PowerPoint.
L'ho caricato sul mio sito web: PowerPoint LanguageFixer
Si occupa di:
Basta impostare una delle caselle di testo nella lingua desiderata, selezionarla e fare clic sul pulsante.
Ecco due opzioni a seconda della situazione:
Situazione 1: la copia originaria di Office è stata installata da un supporto di installazione in lingua francese canadese.
Sarai in grado di impostare la lingua predefinita in inglese, ma le funzioni di base useranno la lingua nativa del supporto di installazione.
L'unica soluzione è disinstallare la versione francese canadese e installarla da un supporto di installazione in inglese o copiare/incollare l'intera presentazione in un nuovo documento e riformattare.
.
Situazione 2: Tutto sembra essere inglese, ma in circostanze limitate appaiono lingue straniere.
In questa situazione, ecco le istruzioni di riparazione per Office 2002:
Spero che questo possa essere d'aiuto.
Ho avuto gli stessi problemi con le presentazioni fatte con PowerPoint tedesco e tradotto manualmente in inglese. Il problema è che l'impostazione della lingua è essenzialmente una formattazione che viene applicata a ciascun elemento della casella di testo da solo.
Non sono a conoscenza di alcuna soluzione conveniente: ho dovuto convivere con la mancata corrispondenza o modificare manualmente il "formato" della lingua di ogni singola casella di testo su ciascuna diapositiva. Non è divertente, quindi per lo più io vivo con esso.
Il codice pubblicato da Leonardo è semplice e generalmente efficace, ma non influenzerà Shape
s nei gruppi. Un codice più generico utilizza la ricorsione per gestire anche questo caso (leggermente modificato da qui , che è nella stessa discussione del codice di Leonardo):
Private Function ChangeLangOfAllText_caller()
'ChangeLangOfAllText (msoLanguageIDEnglishUS)
ChangeLangOfAllText (msoLanguageIDSpanishArgentina)
End Function
Private Function ChangeLangOfAllText(ByVal LangID As Long)
Dim MySlide As Slide
Dim MyShape As Shape
Dim MyD As Design
Dim MyHeaderFooter As HeaderFooter
Dim i, nbs As Integer
''''' First deal with the master slides
For Each MyD In ActivePresentation.Designs
For Each MyShape In MyD.SlideMaster.Shapes
ProcessShapes MyShape, LangID
Next MyShape
Next MyD
''''' Now deal with the slides
' Enable this for debugging
'Debug.Print "File " & ActivePresentation.Name & _
": working with " & ActivePresentation.Slides.Count & " slides"
For Each MySlide In ActivePresentation.Slides
' Enable this for debugging
'Debug.Print " Slide index " & MySlide.SlideIndex & ", Slide number " & MySlide.SlideNumber & _
": working with " & MySlide.Shapes.Count & " shapes"
For Each MyShape In MySlide.Shapes
ProcessShapes MyShape, LangID
Next MyShape
''''' Now deal with the Notes
For Each MyShape In MySlide.NotesPage.Shapes
ProcessShapes MyShape, LangID
Next MyShape
''''' Now deal with the master ' doesn't appear to work, have to try something else
For Each MyShape In MySlide.Master.Shapes
ProcessShapes MyShape, LangID
Next MyShape
Next MySlide
End Function
Private Function ProcessShapes(MyShape As Shape, ByVal LangID As Long)
Dim i As Integer
If ((MyShape.Type = msoGroup) Or (MyShape.Type = msoTable)) Then
On Error Resume Next
For i = 1 To MyShape.GroupItems.Count
''' The trick is to recurse!
ProcessShapes MyShape.GroupItems.Item(i), LangID
Next i
Else
ChangeLang MyShape, LangID
End If
End Function
Private Function ChangeLang(MyShape As Shape, ByVal LangID As Long)
Dim i As Integer
If (MyShape.HasTextFrame) Then
' Enable this for debugging
'Debug.Print " Shape " & MyShape.ZOrderPosition & ", type: " & MyShape.Type & _
", has text frame: " & MyShape.HasTextFrame & ", has text: " & MyShape.TextFrame.HasText & _
", alt. text: " & MyShape.AlternativeText
MyShape.TextFrame.TextRange.LanguageID = LangID
End If
End Function