remplacer et conserver la mise en forme [c#/vsto] - C#/.NET managed - Programmation
Marsh Posté le 02-05-2006 à 17:08:18
tu peux t'inspirer de cette macro VBA à deux balles qui fait ce que tu veux sans les problèmes que tu évoques (Word 2003)
Code :
|
Seul truc : faut faire CTRL+A avant de lancer la macro, je sais pas comment sélectionner tout le document depuis une macro
Marsh Posté le 02-05-2006 à 17:09:30
A priori, faut simplement jouer avec la collection de Characters de la Selection, et non le Content. La collection permet de déplacer les tags de mise en forme automatiquement.
Marsh Posté le 03-05-2006 à 18:52:24
je fait une console app. a priori c'est la meme chose donc ca serait quelque chose comme :
(en c#)
Code :
|
et la t'as tout le doc en selection.
col de Characters? cool , j'ai passé la journée d'hier a essayer de trouver et je suis passé a autre chose.
je vais essayer ca de ce pas, on va voir ce que ca va donner avec les regexp tiens.
Marsh Posté le 03-05-2006 à 20:27:06
Ben essaie de voir si tu peux retrouver les mêmes objets en C# qu'en VBA, y'a pas de raisons qu'ils soient pas les mêmes
Par contre, je veux bien que tu me dises comment t'arrive à jouer avec Word (donc par extension, Excel) à partir de C#. C'est avec VS 2005 ou VS 2003 ? J'ai essayé avec le 2005, et je me suis résigné à lancer un VBS qui bidouille dans Excel, faute de trouver comment le faire depuis C#
Marsh Posté le 03-05-2006 à 21:27:55
fw .net 2.0
sous VS2005
office 2003 + extensions support .net
t'installe vsto.
dans tes references tu rajoutes les lib COM office 11
dans ton code.
using Microsoft.Office;
using Office = Microsoft.Office.Core;
using Word = Microsoft.Office.Interop.Word;
et voila
Marsh Posté le 04-05-2006 à 12:09:01
Hmmm. Ok.
Faudra à l'occasion que tu détailles un peu plus (vsto, le nom des objets COM, un petit exemple de code).
Parceque c'est ce que j'avais fait. Bon, faut dire que j'utilisais la Béta de VS 2005, et c'est peut-être pour ça que ça marchait pas. Je devrais avoir dès demain le DVD de la vrai version (chez M$, ils encaissent vite les abonnements MSDN, mais ils sont pas rapides pour envoyer les valises de DVD, on les a reçu avant-hier -au bout de 3 mois-, je les aurai ce soir )
Dans tous les cas, je crois que je vais rester avec mon VBS, car mon souci, c'est qu'il faut que ça marche aussi avec Excel 2000, et si possible 97.
D'ailleurs, personne n'a Office 97 sous la main pour me dire si ce script donne un résultat ?
Créer un fichier "excel.vbs" contenant le code ci-dessous, puis double-cliquer dessus :
Code :
|
Marsh Posté le 02-05-2006 à 14:00:35
bon allez une question que le mvp .net et COM trouverons facile.
j'ai des documents words (plein!!) et ceux ci sont assez sales.
je cherche a degager les doubles espaces ou a rajouter des insécables apres certains mots
pour l'instant je fait ca en regexp sur un doc.Content.Text
evidemment le probleme c'est que la propriete Range.Text sort du texte brut, donc je perds toutes les mise en forme (style, ital, bold, exposant...)
donc c'est quoi la methode pour lancer des regexp et conserver la mise en forme?
parce que le Range.Find() il est gentil mais c'est juste un str_replace() d'apres ce que je vois.
actuellement :
- j'ouvre un doc word
- j'extrait le Texte
- je lance un Regexp.Replace(String, Pattern, String).