J'essaie d'utiliser VBA dans Microsoft Word pour automatiser des opérations hautement répétitives sur des documents volumineux.Microsoft Word: Modifier la police des caractères manquants dans la police par défaut
La situation est la suivante: J'ai un texte technique contenant beaucoup de caractères spéciaux, par ex. ❨ (U + 2768) et ❩ (U + 2769). Le texte est principalement composé en Cambria, mais certains des caractères spéciaux ne sont pas trouvés dans cette police. Cependant, je sais pertinemment que tous les caractères utilisés dans le document sont présents dans DejaVu Sans Mono. Par conséquent, je voudrais que tous les personnages soient dans Cambria à l'exception de ceux qui ne peuvent pas être affichés dans cette police - ces caractères que je veux afficher dans DejaVu Sans Mono.
Dans Microsoft Word 2007, je pourrais facilement y parvenir en appuyant sur Ctrl + A, définir la police sur DejaVu Sans Mono, définir la police sur Cambria. Le deuxième changement de police ne changerait que la police de ces caractères qui peuvent être affichés dans Cambria.
Toutefois, dans Microsoft Word 2010, cela ne fonctionne apparemment pas. Chaque personnage reçoit la police Cambria, et au lieu d'afficher les caractères non trouvés dans Cambria, le symbole de point d'interrogation encadré est affiché.
Pour surmonter cela, je me suis tourné vers VBA. Il est très facile de changer la police d'un caractère donné, par ex.
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Selection.Find.Text = ChrW(10088)
Selection.Find.Replacement.Text = ChrW(10088)
Selection.Find.Replacement.Font.Name = "DejaVu Sans Mono"
Selection.Find.Execute Replace:=wdReplaceAll
Cependant, il est très amusant d'écrire le code ci-dessus pour chaque caractère (C (DejaVu) ∖ C (Cambria)) ∩ C (Doc) où C (DejaVu), C (Cambria), et C (Doc) est l'ensemble de tous les caractères dans DejaVu Sans Mono, Cambria, et mon document, respectivement.
Existe-t-il un moyen (raisonnablement simple) d'accomplir cela automatiquement? Sûrement Microsoft Word sait quels caractères sont trouvés dans Cambria et quels ne sont pas. Je veux que toutes les occurrences de ces caractères qui ne se trouvent pas dans Cambria reçoivent la police DejaVu Sans Mono.
Assurément, il serait code plus facile de mettre tous les caractères spéciaux dans la deuxième police (DejaVu)? Est-ce que c'est la raison pour laquelle vous ne souhaitez pas faire cela? – Fionnuala
@Remou: En général, Cambria et DejaVu Sans Mono ne semblent pas très bien ensemble. Mais les personnages comme U + 2768 sont si spéciaux que ce n'est pas important. En outre, la plupart des "caractères spéciaux" sont actuellement disponibles à Cambria. De plus, comment définissez-vous un caractère spécial? Les lettres grecques sont-elles des caractères spéciaux? –
Word ne sait pas quels caractères sont présents dans quelle police. Cela est laissé à l'utilisateur final d'utiliser la police qui a les glyphes nécessaires. –