Bonjour,
J'utilise pour les besoins d'un projet les composants COM Office.interop.word pour générer des documents Word. Ce n'est pas l'idéal pour faire cela, mais c'est une contrainte donc je fais avec.
Je rencontre parfois un problème avec un copier-coller. C'est un code que je n'ai pas développé et que j'essaye d'améliorer. Donc j'ai besoin de conseil.
Le code permet de récupérer dans un modèle, de copier son contenu, de le coller a la suite d'un document principal, et par la suite de remplir des signets.
Voici le code :
_Document
nvDoc = CreateDocFromTemplate("modele.dot");
object rngstart = nvDoc.Tables[1].Range.Start;
object rngstop = nvDoc.Tables[16].Range.End;
nvDoc.Range(ref rngstart, ref rngstop).Copy();
Range rng = AddLineFeed(nvDoc.Tables[nbTable + maxTables].Range);
Range rng1 = AddLineFeed(rng);
rng1.Paste();
--
protected_Document CreateDocFromTemplate(String templatePath)
{
// Affectation du template
object templateName = templatePath;
// Création du document Word
object missing = System.Reflection.Missing.Value;
return msWord.Documents.Add(ref templateName, ref missing, ref missing, ref missing);
}
---
protectedRange AddLineFeed(Range range)
{
return EndOfRange(AddParagraph(range).Range);
}
---protected
Range EndOfRange(Range rng)
{
// Déplacement du range à la fin du range spécifié en paratmètre
object unit = WdUnits.wdCharacter;
object count = rng.End - rng.Start;
rng.MoveStart(ref unit, ref count);
return rng;
}Et ce code fonctionne, mais parfois j'ai ce message d'erreur qui parvient. Et quand ça provient, le traitement est arrêté forcément, donc pas de document word.
J'ai pensé à un manque de mémoire pour le contenu copier, mais je suis pas sur.
Exception : System.Runtime.InteropServices.COMException (0x800A11FD): Cette méthode ou propriété n'est pas disponible car le Presse-papiers est vide ou non valide.
à Microsoft.Office.Interop.Word.Range.Paste()
Avez vous une idée pourquoi j'ai cette erreur ?
--
Steph