A Microsoft (em sua infinita sabedoria) não tem a opção Application.OMathAutoCorrect.UseOutsideOMath = True
disponível nas opções do Excel ► Revisão ► Opções de AutoCorreção ► Correção Automática de Matemática ou diretamente por meio do VBA do Excel. IMHO, isso é provavelmente devido às limitações do Excel em exibir os caracteres Unicode verdadeiros e alguns caracteres ASCII regulares como o tick (também conhecido como aspas simples ou ASCII 039) que são usados para outros finalidades. Se algo não puder ser feito completamente e funcionar através de vários pacotes de idiomas opcionais, então todo o processo foi provavelmente arquivado até que uma resolução seja alcançada. Quando o Excel está dentro de seu editor de matemática, uma interface diferente está sendo trocada e todos os símbolos podem ser exibidos corretamente.
Eu preparei uma lista completa dos símbolos Math AutoCorrect no meu OneDrive aqui para você ver: Excel_2013_OMathAutoCorrectEntries.xlsx . Existem algumas omissões muito notáveis como \grave
e \bar
que o Excel corrige ou interpreta automaticamente para outros propósitos, mas a maioria dos símbolos são bons.
Isso significa apenas que temos que contornar a limitação e aceitar quaisquer deficiências. Enquanto o uso do VBA do Excel do objeto OMathAutoCorrect
é um pouco aleijado, o do Word não é. Se tomarmos todas as entradas da coleção OMathAutoCorrectEntries
e convertê-las como adições à coleção AutoCorrectEntries
padrão, elas estarão disponíveis em todos os programas do Office, incluindo o Excel. Os resultados finais em cada um dos programas do Office podem variar.
Feche o Excel e todos os outros programas do Office e, em seguida, abra o Word em um novo documento em branco e toque em Alt+F11
para inserir o VBE. Use os menus suspensos para Inserir ► Módulo (ou Alt+I, M
). Cole o seguinte no novo painel intitulado algo como Normal - NewMacros (Code) ou Normal - Module1 (Code) .
Sub Normalize_Math_AutoCorrect_Entries()
Dim acm As Long, ac As Long, yn As Long, cACEs As AutoCorrectEntries
Set cACEs = Application.AutoCorrect.Entries
With Application.OMathAutoCorrect
.UseOutsideOMath = False 'no longer necessary
For acm = 1 To .Entries.Count
yn = vbYes
For ac = 1 To cACEs.Count
If cACEs(ac).Name = .Entries(acm).Name Then
yn = MsgBox(cACEs(ac).Name & " is currently assigned to " & cACEs(ac).Value & _
Chr(46) & Chr(10) & Chr(10) & "Are you sure you want to replace it?", _
vbYesNo + vbQuestion, "Duplication")
If yn = vbYes Then cACEs(ac).Delete
Exit For
End If
Next ac
If yn = vbYes Then _
Application.AutoCorrect.Entries.Add Name:=.Entries(acm).Name, Value:=.Entries(acm).Value
Next acm
End With
Set cACEs = Nothing
End Sub
Com isso, toque em Alt+Q
para retornar ao seu documento em branco. Toque em Alt+F8
para abrir a caixa de diálogo Macros e execute a macro. Se uma entrada duplicada for encontrada, o processo será pausado e você será apresentado a algo como o seguinte.
Notequeeuescolhiumquepoderealmenteserexibido.MuitosdoscaracteresUnicodeserãorepresentadosapenaspor?
,poisumacaixademensagemVBApadrãonãopodeexibirUnicode.Issonãosignificaqueosímboloseráadicionadoincorretamente.ComooExcel,issoéumalimitaçãodeexibição.
Aceiteourejeiteassobregravações.QualquercoisaqueaindanãotenhasidoencontradanacoleçãopadrãoAutoCorrectEntries
seráadicionadasemperguntar.
Quandoesteprocessoestiverconcluído,todasasentradasOMathAutoCorrect
terãosidonormalizadascomoentradaspadrãoAutoCorrect
.SevocêabriroExcel,elesdevemestardisponíveisimediatamente.Aquiestáumantesedepoisdedigitaroespaçoqueforçaaautocorreçãoapós\beta.
Emumanotarelacionada,escreviumartigoháalgumtempoemquevocêpodeestarinteressadonousodefraçõesestilizadasnosprogramasdoOfficepormeiodeadiçõesàcoleçãoAutoCorrect
padrão.Aquiestáumlinkparaisso:
Agora eu tenho que começar a escrever uma rotina de reversão para que as entradas possam ser removidas. Como há alguma duplicação entre as duas coleções, não sei como lidar com a confirmação, pois há um total de 496 entradas em uma coleção OMathAutoCorrect
padrão.