Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Recherche Word désespérement ...

9 réponses
Avatar
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

9 réponses

Avatar
Bill2
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/
Avatar
\( Olivier \)
effectivement je ne connaissait pas ce mot "automatisation"
j'ai trouver quelques exemple

merci



"Bill2" a écrit dans le message de
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/



Avatar
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
Avatar
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" a écrit dans le message de 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




Avatar
Gloops
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.
Avatar
\( Olivier \)
SET ???

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


merci
olivier

"Gloops" a écrit dans le message de
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.
Avatar
Patrice
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" a écrit dans le message de news:

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" a écrit dans le message de
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








Avatar
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" <http://www.chez.com/scribe/> a écrit dans le message de news:
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" a écrit dans le message de news:

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" a écrit dans le message de
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












Avatar
olivier
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" <http://www.chez.com/scribe/> a écrit dans le message de news:

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" <http://www.chez.com/scribe/> a écrit dans le message de news:
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" a écrit dans le message de news:

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" a écrit dans le message de
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