2010-01-11 6 views
2

Je dois copier du texte d'une présentation PowerPoint à une autre. Cependant, j'ai des problèmes pour copier des symboles spéciaux, tels que des smileys, qui apparaissent dans la présentation cible sous forme de cases vides. En regardant le fichier Open XML dans la présentation originale, je peux voir que le Run contenant le smiley a un attribut « SymbolFont »:Copier des symboles spéciaux d'une présentation PowerPoint à une autre

<a:sym typeface="Wingdings" />

Cependant, en VBA, Shape.TextFrame2.TextRange2.Font = la police de que Run - spectacles Arial.

Comment puis-je déterminer le SymbolFont d'un texte Run en utilisant VBA ou C# (pas XML)? Ensuite, je pourrais spécifier ce SymbolFont dans la présentation cible.

Peut-être existe-t-il d'autres moyens de copier le texte qui n'impliquent pas XML?

Notez que ce problème ne se produit pas uniquement avec Smileys; d'autres caractères spéciaux peuvent montrer différentes SymbolFonts, tels que:

<a:symTypeface = "Symbol", PitchFamily = 18, CharacterSet = 2> 

exemple de code:

getRuns(TextRange2 paragraph) 
{ 
    foreach(TextRange2 run in paragraph.get_Runs(-1,-1)) 
    _myRuns.Add(new MyRun {_text=run.Text, _font=run.Font}); 
} 

copyRunsToParagraph(TextRange2 paragraph) 
{ 
    foreach(MyRun run in _myRuns) 
     paragraph=paragraph.InsertAfter(run._text); 
} 

Note: Run.Font semble revenir que la police latine, pas la police Symbol, par exemple, Arial mais pas Wingdings . Comme je l'ai écrit, différents symboles peuvent avoir des SymbolFonts différents, donc toujours utiliser Wingdings ne fonctionne pas.

+0

Quel est le code que vous utilisez pour copier le texte? –

+0

Je ne pense pas - difficile de croire que cela ne peut pas être fait. –

+0

J'ai exactement le même problème. Des solutions pour le moment? –

Répondre

0

Cela ne peut pas être fait dans VBA.

Questions connexes