Recherche Word désespérement ...

Le
olivier
bonjour,

après maintes recherches je constate que :
1) beaucoup de personne ne comprenne rien a l'utilisation de Word avec .net
2) Ms ne fait pas grand chose pour faciliter cette utilisation (msdn et
autre)

c'est quand meme bizarre tout ca. je parle bien de Word et non de rtf.

je m'explique. (tout ca c'est du publipostage en gros)

je voudrais créer un document word avec dedans des champs que je
démarquerais par : @@NOM @@PRENOM
ces champs pourront etre mis dans un tableau, en gras etc..etc..
peut-importe et c'est justement le but.
ensuite, en .Net (vb chez moi) je creer un dataset et je souhaiterais :
ouvrir une copie du document word,
boucler sur les champs @@xxx
remplacer par ma donnée de mon dataset (tout en respectant la mise ne forme
original du champs de Word)
afficher le nouveau document

et tout ca sans aucune manipulation de la personne (pas de clique dans les
menus Word)

si quelqu'un avait des exmples "simples" et qui "fonctionnent"
Qu'est ce qu'il faut installer de plus ?
quid de .NET 3.5 ?


merci
olivier
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Bill2
Le #12157681
olivier wrote:
bonjour,

après maintes recherches je constate que :
1) beaucoup de personne ne comprenne rien a l'utilisation de Word
avec .net 2) Ms ne fait pas grand chose pour faciliter cette
utilisation (msdn et autre)

c'est quand meme bizarre tout ca. je parle bien de Word et non de rtf.

je m'explique. (tout ca c'est du publipostage en gros...)




Et bien, il y a plein d'info pour réaliser du publipostage "piloté".

Regardez du côté du mot clé "automatisation".
Il y a "surtout" la méthode OpenDataSource !

En gros, vous devez préparer un doc word avec toutes les infos de fusions
nécessaires (champs de fusion, mise en forme, nom des champs de la BDD), et
ensuite, vous pilotez un objet word pour :
- ouvrir le doc "maitre"
- sélectionner la base de donnée
- executer une requete pour n'avoir que les infos utiles
- lancer la fusion

Ensuite, plus qu'à enregistrer le document.

(je réalise ça depuis des pages ASP3 ! Donc ça doit être faisable en .net !)

--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/
\( Olivier \)
Le #12157671
effectivement je ne connaissait pas ce mot "automatisation"
j'ai trouver quelques exemple

merci



"Bill2" news:%
olivier wrote:
bonjour,

après maintes recherches je constate que :
1) beaucoup de personne ne comprenne rien a l'utilisation de Word
avec .net 2) Ms ne fait pas grand chose pour faciliter cette
utilisation (msdn et autre)

c'est quand meme bizarre tout ca. je parle bien de Word et non de rtf.

je m'explique. (tout ca c'est du publipostage en gros...)




Et bien, il y a plein d'info pour réaliser du publipostage "piloté".

Regardez du côté du mot clé "automatisation".
Il y a "surtout" la méthode OpenDataSource !

En gros, vous devez préparer un doc word avec toutes les infos de fusions
nécessaires (champs de fusion, mise en forme, nom des champs de la BDD),
et ensuite, vous pilotez un objet word pour :
- ouvrir le doc "maitre"
- sélectionner la base de donnée
- executer une requete pour n'avoir que les infos utiles
- lancer la fusion

Ensuite, plus qu'à enregistrer le document.

(je réalise ça depuis des pages ASP3 ! Donc ça doit être faisable en .net
!)

--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/



olivier
Le #12140831
merci
j'ai u code mais j'ai une erreur
si tu sais ?...

Dim oTemplatePath As Object = "oessai.dot"
Dim oSaveAsFile As Object = "onewdoc.doc"

Dim oWord As New Word.Application()
Dim oWordDoc As New Word.Document()

Dim oMissing As Object = System.Reflection.Missing.Value
Dim oTrue As Object = True
Dim oFalse As Object = False

oWord.Visible = True


' ICI oWordDoc = NOTHING ????????????????????????
oWordDoc = oWord.Documents.Add(oTemplatePath, oMissing, oMissing,
oMissing)



For Each myMergeField As Word.Field In oWordDoc.Fields
Dim rngFildCode As Word.Range = myMergeField.Code
Dim fieldText As String = rngFildCode.Text
If fieldText.StartsWith("MERGEFIELD") Then
Dim EndMerge As Integer = fieldText.IndexOf("\")
Dim fieldNameLenght As Integer = fieldText.Length - EndMerge
Dim fieldName As String = fieldText.Substring(11, EndMerge -
11)
fieldName = fieldName.Trim

If fieldName = "NAME" Then
myMergeField.Select()
oWord.Selection.TypeText("Some Text")
End If
End If

Next
oWordDoc.Close(oFalse, oMissing, oMissing)
oWord.Quit(oMissing, oMissing, oMissing)






"Sylfelin"
http://www.codeproject.com/KB/cs/Generating_Word_Reports.aspx
ou
http://www.codeproject.com/KB/XML/WordCPArticleTemplate.aspx
ou
http://www.codeproject.com/KB/office/csautomateword.aspx
ou
http://www.codeproject.com/KB/office/DocumentMaker.aspx
ou
http://www.codeproject.com/KB/office/Wordyna.aspx
ou
etc...

Bonne lecture

--

--------------------------
Merci
Sylfelin




Gloops
Le #12140811
olivier a écrit, le 20/02/2008 16:38 :
' ICI oWordDoc = NOTHING ????????????????????????
oWordDoc = oWord.Documents.Add(oTemplatePath, oMissing, oMiss ing,
oMissing)





Salut,

Bien que t'ayant lu dans un groupe consacré à C#, je te suggère pou r VB
d'ajouter "Set" au début de la ligne.
\( Olivier \)
Le #12140801
SET ???

heu, je suis en .net et SET n'existe plus.


merci
olivier

"Gloops" news:%23MdYvm%
olivier a écrit, le 20/02/2008 16:38 :
' ICI oWordDoc = NOTHING ????????????????????????
oWordDoc = oWord.Documents.Add(oTemplatePath, oMissing, oMissing,
oMissing)





Salut,

Bien que t'ayant lu dans un groupe consacré à C#, je te suggère pour VB
d'ajouter "Set" au début de la ligne.
Patrice
Le #12140701
Bonjour,

Merci de ne jamais signaler une erreur sans poster son texte exact (et
indiquer la ligne exacte qui plante, j'imagine que c'est sur la ligne
oWord.Documents.Add ... ?). Le texte de l'erreur est le premier outil de
diagnostic...

Pour l'instant, je vois surtout que les noms des fichiers ne sont pas
corrects. Egalement créer le document via New Word.Document est
contradictoire avec le fait de le créer ensuite avec oWord.Documents.Add et
il serait possible de typer les variables même si ces points ne jouent sans
doute aucun rôle dans le problème...

(Egalement restreindre éventuellement les groupes par exemple la question
n'a rien à voir avec C#)

--
Patrice

"olivier"
merci
j'ai u code mais j'ai une erreur
si tu sais ?...

Dim oTemplatePath As Object = "oessai.dot"
Dim oSaveAsFile As Object = "onewdoc.doc"

Dim oWord As New Word.Application()
Dim oWordDoc As New Word.Document()

Dim oMissing As Object = System.Reflection.Missing.Value
Dim oTrue As Object = True
Dim oFalse As Object = False

oWord.Visible = True


' ICI oWordDoc = NOTHING ????????????????????????
oWordDoc = oWord.Documents.Add(oTemplatePath, oMissing, oMissing,
oMissing)



For Each myMergeField As Word.Field In oWordDoc.Fields
Dim rngFildCode As Word.Range = myMergeField.Code
Dim fieldText As String = rngFildCode.Text
If fieldText.StartsWith("MERGEFIELD") Then
Dim EndMerge As Integer = fieldText.IndexOf("\")
Dim fieldNameLenght As Integer = fieldText.Length -
EndMerge
Dim fieldName As String = fieldText.Substring(11,
EndMerge - 11)
fieldName = fieldName.Trim

If fieldName = "NAME" Then
myMergeField.Select()
oWord.Selection.TypeText("Some Text")
End If
End If

Next
oWordDoc.Close(oFalse, oMissing, oMissing)
oWord.Quit(oMissing, oMissing, oMissing)






"Sylfelin" news:
http://www.codeproject.com/KB/cs/Generating_Word_Reports.aspx
ou
http://www.codeproject.com/KB/XML/WordCPArticleTemplate.aspx
ou
http://www.codeproject.com/KB/office/csautomateword.aspx
ou
http://www.codeproject.com/KB/office/DocumentMaker.aspx
ou
http://www.codeproject.com/KB/office/Wordyna.aspx
ou
etc...

Bonne lecture

--

--------------------------
Merci
Sylfelin








Patrice
Le #12209131
Exemple testé :

Const Template As String = "c:tempmodèle.dot"
Dim oWord As New Word.Application
Dim oDoc As Word.Document
oWord.Visible = True
oDoc = oWord.Documents.Add(Template)

(j'ai supprimé le groupe c# des réponses)
--
Patrice

"Patrice" epY9%
Bonjour,

Merci de ne jamais signaler une erreur sans poster son texte exact (et
indiquer la ligne exacte qui plante, j'imagine que c'est sur la ligne
oWord.Documents.Add ... ?). Le texte de l'erreur est le premier outil de
diagnostic...

Pour l'instant, je vois surtout que les noms des fichiers ne sont pas
corrects. Egalement créer le document via New Word.Document est
contradictoire avec le fait de le créer ensuite avec oWord.Documents.Add
et il serait possible de typer les variables même si ces points ne jouent
sans doute aucun rôle dans le problème...

(Egalement restreindre éventuellement les groupes par exemple la question
n'a rien à voir avec C#)

--
Patrice

"olivier"
merci
j'ai u code mais j'ai une erreur
si tu sais ?...

Dim oTemplatePath As Object = "oessai.dot"
Dim oSaveAsFile As Object = "onewdoc.doc"

Dim oWord As New Word.Application()
Dim oWordDoc As New Word.Document()

Dim oMissing As Object = System.Reflection.Missing.Value
Dim oTrue As Object = True
Dim oFalse As Object = False

oWord.Visible = True


' ICI oWordDoc = NOTHING ????????????????????????
oWordDoc = oWord.Documents.Add(oTemplatePath, oMissing, oMissing,
oMissing)



For Each myMergeField As Word.Field In oWordDoc.Fields
Dim rngFildCode As Word.Range = myMergeField.Code
Dim fieldText As String = rngFildCode.Text
If fieldText.StartsWith("MERGEFIELD") Then
Dim EndMerge As Integer = fieldText.IndexOf("\")
Dim fieldNameLenght As Integer = fieldText.Length -
EndMerge
Dim fieldName As String = fieldText.Substring(11,
EndMerge - 11)
fieldName = fieldName.Trim

If fieldName = "NAME" Then
myMergeField.Select()
oWord.Selection.TypeText("Some Text")
End If
End If

Next
oWordDoc.Close(oFalse, oMissing, oMissing)
oWord.Quit(oMissing, oMissing, oMissing)






"Sylfelin" news:
http://www.codeproject.com/KB/cs/Generating_Word_Reports.aspx
ou
http://www.codeproject.com/KB/XML/WordCPArticleTemplate.aspx
ou
http://www.codeproject.com/KB/office/csautomateword.aspx
ou
http://www.codeproject.com/KB/office/DocumentMaker.aspx
ou
http://www.codeproject.com/KB/office/Wordyna.aspx
ou
etc...

Bonne lecture

--

--------------------------
Merci
Sylfelin












olivier
Le #12209121
je vais regarder ca.
merci

ps :
(Egalement restreindre éventuellement les groupes par exemple la question
n'a rien à voir avec C#)




le problème ici est utilisationde word avec .net
le fait qu'il soit Vb ou c# ne change pas grand chose
a mon avis, qui que ce soit (vb ou c#) sera interresé par la réponse, non ?



"Patrice"
Exemple testé :

Const Template As String = "c:tempmodèle.dot"
Dim oWord As New Word.Application
Dim oDoc As Word.Document
oWord.Visible = True
oDoc = oWord.Documents.Add(Template)

(j'ai supprimé le groupe c# des réponses)
--
Patrice

"Patrice" epY9%
Bonjour,

Merci de ne jamais signaler une erreur sans poster son texte exact (et
indiquer la ligne exacte qui plante, j'imagine que c'est sur la ligne
oWord.Documents.Add ... ?). Le texte de l'erreur est le premier outil de
diagnostic...

Pour l'instant, je vois surtout que les noms des fichiers ne sont pas
corrects. Egalement créer le document via New Word.Document est
contradictoire avec le fait de le créer ensuite avec oWord.Documents.Add
et il serait possible de typer les variables même si ces points ne jouent
sans doute aucun rôle dans le problème...

(Egalement restreindre éventuellement les groupes par exemple la question
n'a rien à voir avec C#)

--
Patrice

"olivier"
merci
j'ai u code mais j'ai une erreur
si tu sais ?...

Dim oTemplatePath As Object = "oessai.dot"
Dim oSaveAsFile As Object = "onewdoc.doc"

Dim oWord As New Word.Application()
Dim oWordDoc As New Word.Document()

Dim oMissing As Object = System.Reflection.Missing.Value
Dim oTrue As Object = True
Dim oFalse As Object = False

oWord.Visible = True


' ICI oWordDoc = NOTHING ????????????????????????
oWordDoc = oWord.Documents.Add(oTemplatePath, oMissing, oMissing,
oMissing)



For Each myMergeField As Word.Field In oWordDoc.Fields
Dim rngFildCode As Word.Range = myMergeField.Code
Dim fieldText As String = rngFildCode.Text
If fieldText.StartsWith("MERGEFIELD") Then
Dim EndMerge As Integer = fieldText.IndexOf("\")
Dim fieldNameLenght As Integer = fieldText.Length -
EndMerge
Dim fieldName As String = fieldText.Substring(11,
EndMerge - 11)
fieldName = fieldName.Trim

If fieldName = "NAME" Then
myMergeField.Select()
oWord.Selection.TypeText("Some Text")
End If
End If

Next
oWordDoc.Close(oFalse, oMissing, oMissing)
oWord.Quit(oMissing, oMissing, oMissing)






"Sylfelin" news:
http://www.codeproject.com/KB/cs/Generating_Word_Reports.aspx
ou
http://www.codeproject.com/KB/XML/WordCPArticleTemplate.aspx
ou
http://www.codeproject.com/KB/office/csautomateword.aspx
ou
http://www.codeproject.com/KB/office/DocumentMaker.aspx
ou
http://www.codeproject.com/KB/office/Wordyna.aspx
ou
etc...

Bonne lecture

--

--------------------------
Merci
Sylfelin
















Publicité
Poster une réponse
Anonyme