Se você já precisou usar um modelo de apresentação em PPT com o texto configurado para um idioma diferente do necessário, então você sabe o quanto pode ser demorado trocar o idioma de revisão de texto de todos os slides. Se for uma apresentação longa, fazer a troca pode consumir um tempo que você não tem (e não trocar pode significar que erros de digitação e/ou ortografia podem passar batidos).
Mas você sabia que existe um jeito fácil de trocar o idioma de revisão de texto de todos os slides de uma maneira mais rápida? E o que é melhor: tudo de uma vez só? Continue lendo e descubra como!
Para trocar o idioma de revisão de texto de um arquivo PPT de uma só vez são necessários apenas 4 passos:
- Habilitar o PowerPoint para executar macros;
- Habilitar a guia “Desenvolvedor” na faixa de opções;
- Abrir o Visual Basic e colar a macro;
- Executar a macro.
Seguindo esse passo a passo, você vai economizar tempo e paciência. Então mãos à obra! (Utilizamos o Office 365 para esse tutorial, se precisar de ajuda com outra versão é só pedir nos comentários.)
1. Habilitar o PowerPoint para executar macros
- Clique na guia “Arquivo” > “Opções”;
- Na janela que se abrir, clique em “Central de Confiabilidade” e, em seguida, em “Configurações da Central de Confiabilidade”;
- Clique em “Habilitar todas as macros” (não se preocupe, você pode voltar à configuração após terminar de trocar o idioma de revisão de texto);
- Clique em OK.
2. Habilitar a guia “Desenvolvedor” na faixa de opções
- Ainda em “Arquivo” > “Opções”, clique em “Personalizar Faixa de Opções”;
- Na coluna da direita, marque a caixa de seleção “Desenvolvedor”;
- Clique em OK.
3. Abrir o Visual Basic e colar a macro
- Na Faixa de Opções, clique na guia “Desenvolvedor” e, em seguida, no botão “Visual Basic”;
- Na janela que se abrir, clique na guia “Inserir” > “Módulo”;
- Copie e cole o seguinte código na caixa de texto que se abriu para trocar o texto para Português do Brasil:
Sub TrocarParaPtBR()
Dim pSlide As Slide
Dim pShape As Shape
For Each pSlide In ActivePresentation.Slides
For Each pShape In pSlide.Shapes
If pShape.Type = msoTextBox Or msoPlaceholder Then
If pShape.HasTextFrame Then
pShape.TextFrame.TextRange.LanguageID = msoLanguageIDBrazilianPortuguese
End If
End If
Next
Next
End Sub
Se precisar trocar o idioma de revisão de texto para outra língua, troque pelo código de outro idioma. Você encontra a lista completa dos códigos em MsoLanguageID Enum.
- Salve (ctrl + s) e feche o Visual Basic. Pode ser que você tenha que salvar o arquivo no formato .pptm para obter uma Apresentação do PowerPoint Habilitada para Macro. Se isso acontecer, você poderá salvar o arquivo como .pptx novamente assim que terminar de trocar o idioma de revisão de texto.
4. Executar a macro
- De volta ao PowerPoint, na guia “Desenvolvedor”, clique em “Macros”;
- Selecione a macro “TrocarParaPtBR” e, em seguida, clique em “Executar”.
Pronto, todas as caixas de texto do seu arquivo PPT estarão com Português do Brasil (ou qualquer outro idioma que você tenha escolhido) como o idioma para revisão de texto, facilitando a correção de erros de digitação e de português.
Agora que sua apresentação está configurada para o idioma de sua preferência, que tal vincular gráficos e outros objetos do Excel no PowerPoint para agilizar a atualização das suas apresentações?
Olá, Ana! Tudo bem?
Seu código é muito legal! Obrigado!
Ao executá-lo, notei que não há troca de idiomas para caixas de texto agrupadas nem tabelas.
Isto posto, fiz uma atualização no código (abaixo).
Espero ter ajudado assim como vc me ajudou.
Sub TrocarParaPtBRGrupo()
Dim pSlide As Slide
Dim pShape As Shape
Dim nRow As Integer
Dim nCol As Integer
‘Desagrupar shapes
For Each pSlide In ActivePresentation.Slides
For Each pShape In pSlide.Shapes
On Error Resume Next
pShape.Ungroup
On Error GoTo 0
Next pShape
Next pSlide
‘Definir idioma de revisão em Caixas de Texto
For Each pSlide In ActivePresentation.Slides
For Each pShape In pSlide.Shapes
If pShape.Type = msoTextBox Or msoPlaceholder Then
If pShape.HasTextFrame Then
pShape.TextFrame.TextRange.LanguageID = msoLanguageIDBrazilianPortuguese
End If
End If
Next
Next
‘Definir idioma de revisão em Tabelas
For Each pSlide In ActivePresentation.Slides
For Each pShape In pSlide.Shapes
If pShape.HasTable Then
For nRow = 1 To pShape.Table.Rows.Count
For nCol = 1 To pShape.Table.Columns.Count
pShape.Table.Cell(nRow, nCol).Shape.TextFrame.TextRange.LanguageID = msoLanguageIDBrazilianPortuguese
Next
Next
End If
Next
Next
End Sub
Olá Ana e Vinícius!
Não estou conseguindo usar esse código atualizado pelo Vinícius, dá o seguinte erro:
Erro de complicação:
‘Sub’ ou ‘function’ não definida.
Por favor, poderiam me ajudar?
Obrigada! Michele
Sensacional.. o ppt estava me irritando profundamente, pois apesar de deixar configurado a correção em portugues, ele simplesmente não acatava, e marcava todas as palavras, por conta de que fazia a correção em ingles. com seu código, resolvi meu problema. muito obrigada por compartihar.
Obrigada, Vinícius! Ajudou bastante! 😀
Muito legal!! Obrigado!!
Muito Agradecido, Ana!!!
Deus lhe abençoe!
Olá Ana. Primeiramente agradeço pelo tutorial. Muito útil. Porém, ao aplicar a macro, dá o seguinte erro:
“Erro de compilação”.
“Sub ou function não definida”.
Depois destaca em amarelo a 1° linha do código:
Sub TrocarParaPtBRGrupo()
Muito obrigado à Ana e ao Vinícius. Valeu! Uma beleza.
Testei aqui, mas nada aconteceu.
Power Point versão atualizada
Obrigado Ana e Vinicius. Uma alternativa ao código do Vinicius, porém sem desagrupar, apenas iterando por dentro dos objetos do grupo (sem limitação para quantidade de subgrupos).
Function PercorrerObjetosETrocarLan(obj As Variant, lang As Variant)
DoEvents ' Para não correr o risco de ficar em um loop infito e travar seu arquivo
' Grupos
If obj.Type = msoGroup Then
For Each SubObj In obj.GroupItems
PercorrerObjetosETrocarLan SubObj, lang
Next SubObj
' Tabelas
ElseIf obj.HasTable Then
For nRow = 1 To obj.Table.Rows.Count
DoEvents
For nCol = 1 To obj.Table.Columns.Count
DoEvents
obj.Table.Cell(nRow, nCol).Shape.TextFrame.TextRange.LanguageID = lang
Next nCol
Next nRow
' Objetos de Texto
Else
If obj.Type = msoTextBox Or msoPlaceholder Then
If obj.HasTextFrame Then
obj.TextFrame.TextRange.LanguageID = lang
End If
End If
End If
End Function
Sub Main()
Dim pSlide As Slide
Dim pShape As Shape
For Each pSlide In ActivePresentation.Slides
For Each pShape In pSlide.Shapes
PercorrerObjetosETrocarLan pShape, msoLanguageIDBrazilianPortuguese
Next pShape
Next pSlide
End Sub
Não funciona a linha “pShape.TextFrame.TextRange.LanguageID = msoLanguageIDBrazilianPortuguese” esta dando erro.
Tem alguma outra sugestão ?
Obrigado
Comigo acontece o mesmo. A propriedade “LaguageID” não existe no VBA para Powerpoint no macOS.
Comigo funcionou perfeitamente !! Obg !!!
Olá pessoal
Para mim esta dando erro nesta parte “pShape.TextFrame.TextRange.LanguageID = msoLanguageIDBrazilianPortuguese” e o erro é Erro em tempo de execução -2147024809 (80070057) O valor especificado esta fora dos limites