Optimiser automatisation word

cococo84 Messages postés 72 Date d'inscription mercredi 21 septembre 2005 Statut Membre Dernière intervention 13 janvier 2006 - 13 janv. 2006 à 11:49
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 - 13 janv. 2006 à 16:29
bonjour,
je cherche à automatiser une page word à partir de mon application winform.
Mon code ci-dessous marche bien mais le temps d'execution est bcp trop long.
Cmt puis-je optimiser ce code pour accroître la vitesse d'execution?
merci d'avance.

// Connexion à Word
Word.Application msWord = new Word.Application();
msWord.Visible true; object missing System.Reflection.Missing.Value;
// Attribuer le nom
object fileName = "C:\\Test\\calculgéo.doc";
Word.Document nvDoc;

// ouvrir le document existant
nvDoc = msWord.Documents.Open(ref fileName, ref missing, ref missing,
ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing,
ref missing);


// Copie Le texte que je transfère dans le clipboard
string monContenu = vaf.P.Value.ToString("0.000");
DataObject clipData1 = new DataObject(DataFormats.Rtf, monContenu);
Clipboard.SetDataObject(clipData1, false) ;
// Transfert le clipboard dans_u87 ?ord

// On identifie l'emplacement
object field = "cell1";
object fieldEnd = "c1";
object posStart = nvDoc.Bookmarks.get_Item(ref field).Start;
object posEnd = nvDoc.Bookmarks.get_Item(ref fieldEnd).End;
nvDoc.Range( ref posStart, ref posEnd).Select();
// On transfert le texte
msWord.Selection.Paste();
// On déplace le bookmark de fin
nvDoc.Bookmarks.Add((string)fieldEnd, ref missing);

monContenu = inf.textBox1.Text;
DataObject clipData115 = new DataObject(DataFormats.Rtf, monContenu) ;
Clipboard.SetDataObject(clipData115, false) ;
field = "cell115" ;
fieldEnd = "c115";
posStart = nvDoc.Bookmarks.get_Item(ref field).Start;
posEnd = nvDoc.Bookmarks.get_Item(ref fieldEnd).End;
nvDoc.Range( ref posStart, ref posEnd).Select();
msWord.Selection.Paste();
nvDoc.Bookmarks.Add((string)fieldEnd, ref missing);

monContenu = inf.textBox2.Text;
DataObject clipData116 = new DataObject(DataFormats.Rtf, monContenu) ;
Clipboard.SetDataObject(clipData116, false) ;
field = "cell116" ;
fieldEnd = "c116";
posStart = nvDoc.Bookmarks.get_Item(ref field).Start;
posEnd = nvDoc.Bookmarks.get_Item(ref fieldEnd).End;
nvDoc.Range( ref posStart, ref posEnd).Select();
msWord.Selection.Paste();
nvDoc.Bookmarks.Add((string)fieldEnd, ref missing);

monContenu = inf.textBox4.Text;
DataObject clipData117 = new DataObject(DataFormats.Rtf, monContenu) ;
Clipboard.SetDataObject(clipData117, false) ;
field = "cell117" ;
fieldEnd = "c117";
posStart = nvDoc.Bookmarks.get_Item(ref field).Start;
posEnd = nvDoc.Bookmarks.get_Item(ref fieldEnd).End;
nvDoc.Range( ref posStart, ref posEnd).Select();
msWord.Selection.Paste();
nvDoc.Bookmarks.Add((string)fieldEnd, ref missing);


etc....

1 réponse

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
13 janv. 2006 à 16:29
je sais pas ce que fait exactement ton code... mais le pilotage de Word est très lent... à une époque je mettait 5min pour un doc word et 10s pour le mm en HTML.

Sébastien FERRAND
[MVP Visual C#]
0
Rejoignez-nous