Je cherche à générer un document Word dans une application VB.Net.
Pour cela, je me sers de plusieurs fichiers Word sources.
J'arrive à :
Créer l'objet Word
Ouvrir un document
Ecrire du texte à la position d'un signet
Sauvegarder le document
Quitter Word
Mais je n'arrive pas à faire plusieurs choses :
- Positionner le curseur sur un signet qui se trouve dans 1 tableau.
Ce tableau est un tableau de 2 lignes et 2 colonnes.
Le signet est sur la 1ère colonne de la dernière ligne.
- Ecrire du texte à la position du curseur
- Positionner le curseur à la cellule suivante (colonne 2 de la 2e ligne)
(dans Word, en utilisant la touche Tab)
- Créer une nouvelle ligne dans le tableau (tab aussi dans Word)
Et enfin,
- Copier la totalité de ce document (texte et mise en forme) à la fin d'un
autre document.
Merci d'avance pour votre aide,
Stéphane.
PS : 2 exemples de code.
* Ceci fonctionne :
'J'ouvre un objet word.
Dim word As New Word.Application
'Je copie mon premier fichier Word source vers un nouveau fichier
temporaire.
Dim nom_fichier_tmp As String = My.Computer.FileSystem.GetTempFileName
IO.File.Copy(nom_fichier_source, nom_fichier_tmp, True)
'J'ouvre le document temporaire.
Dim document_tmp As Word.Document
document_tmp = word.Documents.Open(CType(nom_fichier_tmp, Object))
'Je rentre le texte pour chaque signet.
document_tmp.Bookmarks.Item("bookmarkOption1").Range.Text =
sdr.Item("Option1").ToString
document_tmp.Bookmarks.Item("bookmarkOption2").Range.Text =
sdr.Item("Option2").ToString
'Je sauvegarde le document.
document_tmp.Save()
'Je ferme le document temporaire.
document_tmp.Close()
document_tmp = Nothing
'Je copie le fichier temporaire vers le document final.
IO.File.Copy(nom_fichier_tmp, nom_fichier, True)
'J'efface le fichier temporaire
IO.File.Delete(nom_fichier_tmp)
'Je quitte Word.
word.Quit()
word = Nothing
'Dans ce 1er exemple, mon fichier Word final est correct.
* Ceci ne fonctionne pas correctement :
'J'ouvre un objet word.
Dim word As New Word.Application
'Je copie mon premier fichier Word source vers un nouveau fichier
temporaire.
Dim nom_fichier_tmp As String = My.Computer.FileSystem.GetTempFileName
IO.File.Copy(nom_fichier_source, nom_fichier_tmp, True)
'J'ouvre le document temporaire.
Dim document_tmp As Word.Document
document_tmp = word.Documents.Open(CType(nom_fichier_tmp, Object))
'Je rentre le texte pour chaque signet.
document_tmp.Bookmarks.Item("bookmarkOption1").Range.Text =
sdr.Item("Option1").ToString
document_tmp.Bookmarks.Item("bookmarkOption2").Range.Text =
sdr.Item("Option2").ToString
'Je sauvegarde le document.
document_tmp.Save()
'Je copie mon 2e fichier Word source vers un nouveau fichier temporaire.
Dim nom_fichier_tmp2 As String = My.Computer.FileSystem.GetTempFileName
IO.File.Copy(nom_fichier_source2, nom_fichier_tmp2, True)
'J'ouvre le document temporaire 2.
Dim document_tmp2 As Word.Document
document_tmp2 = word.Documents.Open(CType(nom_fichier_tmp2, Object))
'Atteindre bookmarkNoms
document_tmp2.Bookmarks.Item("bookmarkNoms").Range.Select()
Dim ligne As Integer = 1
While sdr.Read
'Crée la ligne suivante du tableau si ce n'est pas la 1ère ligne à écrire
If ligne > 1 Then document_tmp2.Range.Text = vbTab
'Ecrire dans la colonne 1
document_tmp2.Range.Text = sdr.Item("NuméroAuto").ToString
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
gillardg
as tu cherché dans les forums de vbfrance.com ? i
<Stéphane> a écrit dans le message de groupe de discussion :
Bonjour,
Je cherche à générer un document Word dans une application VB.Net.
Pour cela, je me sers de plusieurs fichiers Word sources.
J'arrive à : Créer l'objet Word Ouvrir un document Ecrire du texte à la position d'un signet Sauvegarder le document Quitter Word
Mais je n'arrive pas à faire plusieurs choses : - Positionner le curseur sur un signet qui se trouve dans 1 tableau. Ce tableau est un tableau de 2 lignes et 2 colonnes. Le signet est sur la 1ère colonne de la dernière ligne. - Ecrire du texte à la position du curseur - Positionner le curseur à la cellule suivante (colonne 2 de la 2e ligne) (dans Word, en utilisant la touche Tab) - Créer une nouvelle ligne dans le tableau (tab aussi dans Word) Et enfin, - Copier la totalité de ce document (texte et mise en forme) à la fin d'un autre document.
Merci d'avance pour votre aide, Stéphane.
PS : 2 exemples de code.
* Ceci fonctionne :
'J'ouvre un objet word. Dim word As New Word.Application
'Je copie mon premier fichier Word source vers un nouveau fichier temporaire. Dim nom_fichier_tmp As String = My.Computer.FileSystem.GetTempFileName IO.File.Copy(nom_fichier_source, nom_fichier_tmp, True)
'J'ouvre le document temporaire. Dim document_tmp As Word.Document document_tmp = word.Documents.Open(CType(nom_fichier_tmp, Object))
'Je rentre le texte pour chaque signet. document_tmp.Bookmarks.Item("bookmarkOption1").Range.Text = sdr.Item("Option1").ToString document_tmp.Bookmarks.Item("bookmarkOption2").Range.Text = sdr.Item("Option2").ToString
'Je sauvegarde le document. document_tmp.Save()
'Je ferme le document temporaire. document_tmp.Close() document_tmp = Nothing
'Je copie le fichier temporaire vers le document final. IO.File.Copy(nom_fichier_tmp, nom_fichier, True)
'J'efface le fichier temporaire IO.File.Delete(nom_fichier_tmp)
'Je quitte Word. word.Quit() word = Nothing
'Dans ce 1er exemple, mon fichier Word final est correct.
* Ceci ne fonctionne pas correctement :
'J'ouvre un objet word. Dim word As New Word.Application
'Je copie mon premier fichier Word source vers un nouveau fichier temporaire. Dim nom_fichier_tmp As String = My.Computer.FileSystem.GetTempFileName IO.File.Copy(nom_fichier_source, nom_fichier_tmp, True)
'J'ouvre le document temporaire. Dim document_tmp As Word.Document document_tmp = word.Documents.Open(CType(nom_fichier_tmp, Object))
'Je rentre le texte pour chaque signet. document_tmp.Bookmarks.Item("bookmarkOption1").Range.Text = sdr.Item("Option1").ToString document_tmp.Bookmarks.Item("bookmarkOption2").Range.Text = sdr.Item("Option2").ToString
'Je sauvegarde le document. document_tmp.Save()
'Je copie mon 2e fichier Word source vers un nouveau fichier temporaire. Dim nom_fichier_tmp2 As String = My.Computer.FileSystem.GetTempFileName IO.File.Copy(nom_fichier_source2, nom_fichier_tmp2, True)
'J'ouvre le document temporaire 2. Dim document_tmp2 As Word.Document document_tmp2 = word.Documents.Open(CType(nom_fichier_tmp2, Object))
'Atteindre bookmarkNoms document_tmp2.Bookmarks.Item("bookmarkNoms").Range.Select() Dim ligne As Integer = 1
While sdr.Read
'Crée la ligne suivante du tableau si ce n'est pas la 1ère ligne à écrire If ligne > 1 Then document_tmp2.Range.Text = vbTab
'Ecrire dans la colonne 1 document_tmp2.Range.Text = sdr.Item("NuméroAuto").ToString
'Je copie le fichier temporaire vers le document final. IO.File.Copy(nom_fichier_tmp, nom_fichier, True)
'J'efface les fichiers temporaires IO.File.Delete(nom_fichier_tmp) IO.File.Delete(nom_fichier_tmp2)
'Je quitte Word. word.Quit() word = Nothing
'Dans ce 2e exemple, mon fichier Word final ne contient que la donnée contenue dans le champs "Nom" de la dernière occurence.
as tu cherché dans les forums de vbfrance.com ?
i
<Stéphane> a écrit dans le message de groupe de discussion :
uI0myEDxJHA.4176@TK2MSFTNGP03.phx.gbl...
Bonjour,
Je cherche à générer un document Word dans une application VB.Net.
Pour cela, je me sers de plusieurs fichiers Word sources.
J'arrive à :
Créer l'objet Word
Ouvrir un document
Ecrire du texte à la position d'un signet
Sauvegarder le document
Quitter Word
Mais je n'arrive pas à faire plusieurs choses :
- Positionner le curseur sur un signet qui se trouve dans 1 tableau.
Ce tableau est un tableau de 2 lignes et 2 colonnes.
Le signet est sur la 1ère colonne de la dernière ligne.
- Ecrire du texte à la position du curseur
- Positionner le curseur à la cellule suivante (colonne 2 de la 2e ligne)
(dans Word, en utilisant la touche Tab)
- Créer une nouvelle ligne dans le tableau (tab aussi dans Word)
Et enfin,
- Copier la totalité de ce document (texte et mise en forme) à la fin d'un
autre document.
Merci d'avance pour votre aide,
Stéphane.
PS : 2 exemples de code.
* Ceci fonctionne :
'J'ouvre un objet word.
Dim word As New Word.Application
'Je copie mon premier fichier Word source vers un nouveau fichier
temporaire.
Dim nom_fichier_tmp As String = My.Computer.FileSystem.GetTempFileName
IO.File.Copy(nom_fichier_source, nom_fichier_tmp, True)
'J'ouvre le document temporaire.
Dim document_tmp As Word.Document
document_tmp = word.Documents.Open(CType(nom_fichier_tmp, Object))
'Je rentre le texte pour chaque signet.
document_tmp.Bookmarks.Item("bookmarkOption1").Range.Text =
sdr.Item("Option1").ToString
document_tmp.Bookmarks.Item("bookmarkOption2").Range.Text =
sdr.Item("Option2").ToString
'Je sauvegarde le document.
document_tmp.Save()
'Je ferme le document temporaire.
document_tmp.Close()
document_tmp = Nothing
'Je copie le fichier temporaire vers le document final.
IO.File.Copy(nom_fichier_tmp, nom_fichier, True)
'J'efface le fichier temporaire
IO.File.Delete(nom_fichier_tmp)
'Je quitte Word.
word.Quit()
word = Nothing
'Dans ce 1er exemple, mon fichier Word final est correct.
* Ceci ne fonctionne pas correctement :
'J'ouvre un objet word.
Dim word As New Word.Application
'Je copie mon premier fichier Word source vers un nouveau fichier
temporaire.
Dim nom_fichier_tmp As String = My.Computer.FileSystem.GetTempFileName
IO.File.Copy(nom_fichier_source, nom_fichier_tmp, True)
'J'ouvre le document temporaire.
Dim document_tmp As Word.Document
document_tmp = word.Documents.Open(CType(nom_fichier_tmp, Object))
'Je rentre le texte pour chaque signet.
document_tmp.Bookmarks.Item("bookmarkOption1").Range.Text =
sdr.Item("Option1").ToString
document_tmp.Bookmarks.Item("bookmarkOption2").Range.Text =
sdr.Item("Option2").ToString
'Je sauvegarde le document.
document_tmp.Save()
'Je copie mon 2e fichier Word source vers un nouveau fichier temporaire.
Dim nom_fichier_tmp2 As String = My.Computer.FileSystem.GetTempFileName
IO.File.Copy(nom_fichier_source2, nom_fichier_tmp2, True)
'J'ouvre le document temporaire 2.
Dim document_tmp2 As Word.Document
document_tmp2 = word.Documents.Open(CType(nom_fichier_tmp2, Object))
'Atteindre bookmarkNoms
document_tmp2.Bookmarks.Item("bookmarkNoms").Range.Select()
Dim ligne As Integer = 1
While sdr.Read
'Crée la ligne suivante du tableau si ce n'est pas la 1ère ligne à écrire
If ligne > 1 Then document_tmp2.Range.Text = vbTab
'Ecrire dans la colonne 1
document_tmp2.Range.Text = sdr.Item("NuméroAuto").ToString
<Stéphane> a écrit dans le message de groupe de discussion :
Bonjour,
Je cherche à générer un document Word dans une application VB.Net.
Pour cela, je me sers de plusieurs fichiers Word sources.
J'arrive à : Créer l'objet Word Ouvrir un document Ecrire du texte à la position d'un signet Sauvegarder le document Quitter Word
Mais je n'arrive pas à faire plusieurs choses : - Positionner le curseur sur un signet qui se trouve dans 1 tableau. Ce tableau est un tableau de 2 lignes et 2 colonnes. Le signet est sur la 1ère colonne de la dernière ligne. - Ecrire du texte à la position du curseur - Positionner le curseur à la cellule suivante (colonne 2 de la 2e ligne) (dans Word, en utilisant la touche Tab) - Créer une nouvelle ligne dans le tableau (tab aussi dans Word) Et enfin, - Copier la totalité de ce document (texte et mise en forme) à la fin d'un autre document.
Merci d'avance pour votre aide, Stéphane.
PS : 2 exemples de code.
* Ceci fonctionne :
'J'ouvre un objet word. Dim word As New Word.Application
'Je copie mon premier fichier Word source vers un nouveau fichier temporaire. Dim nom_fichier_tmp As String = My.Computer.FileSystem.GetTempFileName IO.File.Copy(nom_fichier_source, nom_fichier_tmp, True)
'J'ouvre le document temporaire. Dim document_tmp As Word.Document document_tmp = word.Documents.Open(CType(nom_fichier_tmp, Object))
'Je rentre le texte pour chaque signet. document_tmp.Bookmarks.Item("bookmarkOption1").Range.Text = sdr.Item("Option1").ToString document_tmp.Bookmarks.Item("bookmarkOption2").Range.Text = sdr.Item("Option2").ToString
'Je sauvegarde le document. document_tmp.Save()
'Je ferme le document temporaire. document_tmp.Close() document_tmp = Nothing
'Je copie le fichier temporaire vers le document final. IO.File.Copy(nom_fichier_tmp, nom_fichier, True)
'J'efface le fichier temporaire IO.File.Delete(nom_fichier_tmp)
'Je quitte Word. word.Quit() word = Nothing
'Dans ce 1er exemple, mon fichier Word final est correct.
* Ceci ne fonctionne pas correctement :
'J'ouvre un objet word. Dim word As New Word.Application
'Je copie mon premier fichier Word source vers un nouveau fichier temporaire. Dim nom_fichier_tmp As String = My.Computer.FileSystem.GetTempFileName IO.File.Copy(nom_fichier_source, nom_fichier_tmp, True)
'J'ouvre le document temporaire. Dim document_tmp As Word.Document document_tmp = word.Documents.Open(CType(nom_fichier_tmp, Object))
'Je rentre le texte pour chaque signet. document_tmp.Bookmarks.Item("bookmarkOption1").Range.Text = sdr.Item("Option1").ToString document_tmp.Bookmarks.Item("bookmarkOption2").Range.Text = sdr.Item("Option2").ToString
'Je sauvegarde le document. document_tmp.Save()
'Je copie mon 2e fichier Word source vers un nouveau fichier temporaire. Dim nom_fichier_tmp2 As String = My.Computer.FileSystem.GetTempFileName IO.File.Copy(nom_fichier_source2, nom_fichier_tmp2, True)
'J'ouvre le document temporaire 2. Dim document_tmp2 As Word.Document document_tmp2 = word.Documents.Open(CType(nom_fichier_tmp2, Object))
'Atteindre bookmarkNoms document_tmp2.Bookmarks.Item("bookmarkNoms").Range.Select() Dim ligne As Integer = 1
While sdr.Read
'Crée la ligne suivante du tableau si ce n'est pas la 1ère ligne à écrire If ligne > 1 Then document_tmp2.Range.Text = vbTab
'Ecrire dans la colonne 1 document_tmp2.Range.Text = sdr.Item("NuméroAuto").ToString
Par contre, même si j'ai réussi à trouver 1 solution pour copier le texte d'un document à la fin d'un autre, j'aimerais savoir s'il existe un moyen de se passer du presse-papiers :
document_tmp2.Content.Copy()
document_tmp.Range.Words.Last.Paste()
Stéphane
"gillardg" <gillardg*remove*@live.be> a écrit dans le message de news:
as tu cherché dans les forums de vbfrance.com ? i
<Stéphane> a écrit dans le message de groupe de discussion :
Bonjour,
Je cherche à générer un document Word dans une application VB.Net.
Pour cela, je me sers de plusieurs fichiers Word sources.
J'arrive à : Créer l'objet Word Ouvrir un document Ecrire du texte à la position d'un signet Sauvegarder le document Quitter Word
Mais je n'arrive pas à faire plusieurs choses : - Positionner le curseur sur un signet qui se trouve dans 1 tableau. Ce tableau est un tableau de 2 lignes et 2 colonnes. Le signet est sur la 1ère colonne de la dernière ligne. - Ecrire du texte à la position du curseur - Positionner le curseur à la cellule suivante (colonne 2 de la 2e ligne) (dans Word, en utilisant la touche Tab) - Créer une nouvelle ligne dans le tableau (tab aussi dans Word) Et enfin, - Copier la totalité de ce document (texte et mise en forme) à la fin d'un autre document.
Merci d'avance pour votre aide, Stéphane.
PS : 2 exemples de code.
* Ceci fonctionne :
'J'ouvre un objet word. Dim word As New Word.Application
'Je copie mon premier fichier Word source vers un nouveau fichier temporaire. Dim nom_fichier_tmp As String = My.Computer.FileSystem.GetTempFileName IO.File.Copy(nom_fichier_source, nom_fichier_tmp, True)
'J'ouvre le document temporaire. Dim document_tmp As Word.Document document_tmp = word.Documents.Open(CType(nom_fichier_tmp, Object))
'Je rentre le texte pour chaque signet. document_tmp.Bookmarks.Item("bookmarkOption1").Range.Text = sdr.Item("Option1").ToString document_tmp.Bookmarks.Item("bookmarkOption2").Range.Text = sdr.Item("Option2").ToString
'Je sauvegarde le document. document_tmp.Save()
'Je ferme le document temporaire. document_tmp.Close() document_tmp = Nothing
'Je copie le fichier temporaire vers le document final. IO.File.Copy(nom_fichier_tmp, nom_fichier, True)
'J'efface le fichier temporaire IO.File.Delete(nom_fichier_tmp)
'Je quitte Word. word.Quit() word = Nothing
'Dans ce 1er exemple, mon fichier Word final est correct.
* Ceci ne fonctionne pas correctement :
'J'ouvre un objet word. Dim word As New Word.Application
'Je copie mon premier fichier Word source vers un nouveau fichier temporaire. Dim nom_fichier_tmp As String = My.Computer.FileSystem.GetTempFileName IO.File.Copy(nom_fichier_source, nom_fichier_tmp, True)
'J'ouvre le document temporaire. Dim document_tmp As Word.Document document_tmp = word.Documents.Open(CType(nom_fichier_tmp, Object))
'Je rentre le texte pour chaque signet. document_tmp.Bookmarks.Item("bookmarkOption1").Range.Text = sdr.Item("Option1").ToString document_tmp.Bookmarks.Item("bookmarkOption2").Range.Text = sdr.Item("Option2").ToString
'Je sauvegarde le document. document_tmp.Save()
'Je copie mon 2e fichier Word source vers un nouveau fichier temporaire. Dim nom_fichier_tmp2 As String = My.Computer.FileSystem.GetTempFileName IO.File.Copy(nom_fichier_source2, nom_fichier_tmp2, True)
'J'ouvre le document temporaire 2. Dim document_tmp2 As Word.Document document_tmp2 = word.Documents.Open(CType(nom_fichier_tmp2, Object))
'Atteindre bookmarkNoms document_tmp2.Bookmarks.Item("bookmarkNoms").Range.Select() Dim ligne As Integer = 1
While sdr.Read
'Crée la ligne suivante du tableau si ce n'est pas la 1ère ligne à écrire If ligne > 1 Then document_tmp2.Range.Text = vbTab
'Ecrire dans la colonne 1 document_tmp2.Range.Text = sdr.Item("NuméroAuto").ToString
Par contre, même si j'ai réussi à trouver 1 solution pour copier le texte
d'un document à la fin d'un autre, j'aimerais savoir s'il existe un moyen de
se passer du presse-papiers :
document_tmp2.Content.Copy()
document_tmp.Range.Words.Last.Paste()
Stéphane
"gillardg" <gillardg*remove*@live.be> a écrit dans le message de news:
OJe44iFxJHA.3848@TK2MSFTNGP02.phx.gbl...
as tu cherché dans les forums de vbfrance.com ?
i
<Stéphane> a écrit dans le message de groupe de discussion :
uI0myEDxJHA.4176@TK2MSFTNGP03.phx.gbl...
Bonjour,
Je cherche à générer un document Word dans une application VB.Net.
Pour cela, je me sers de plusieurs fichiers Word sources.
J'arrive à :
Créer l'objet Word
Ouvrir un document
Ecrire du texte à la position d'un signet
Sauvegarder le document
Quitter Word
Mais je n'arrive pas à faire plusieurs choses :
- Positionner le curseur sur un signet qui se trouve dans 1 tableau.
Ce tableau est un tableau de 2 lignes et 2 colonnes.
Le signet est sur la 1ère colonne de la dernière ligne.
- Ecrire du texte à la position du curseur
- Positionner le curseur à la cellule suivante (colonne 2 de la 2e ligne)
(dans Word, en utilisant la touche Tab)
- Créer une nouvelle ligne dans le tableau (tab aussi dans Word)
Et enfin,
- Copier la totalité de ce document (texte et mise en forme) à la fin
d'un autre document.
Merci d'avance pour votre aide,
Stéphane.
PS : 2 exemples de code.
* Ceci fonctionne :
'J'ouvre un objet word.
Dim word As New Word.Application
'Je copie mon premier fichier Word source vers un nouveau fichier
temporaire.
Dim nom_fichier_tmp As String = My.Computer.FileSystem.GetTempFileName
IO.File.Copy(nom_fichier_source, nom_fichier_tmp, True)
'J'ouvre le document temporaire.
Dim document_tmp As Word.Document
document_tmp = word.Documents.Open(CType(nom_fichier_tmp, Object))
'Je rentre le texte pour chaque signet.
document_tmp.Bookmarks.Item("bookmarkOption1").Range.Text =
sdr.Item("Option1").ToString
document_tmp.Bookmarks.Item("bookmarkOption2").Range.Text =
sdr.Item("Option2").ToString
'Je sauvegarde le document.
document_tmp.Save()
'Je ferme le document temporaire.
document_tmp.Close()
document_tmp = Nothing
'Je copie le fichier temporaire vers le document final.
IO.File.Copy(nom_fichier_tmp, nom_fichier, True)
'J'efface le fichier temporaire
IO.File.Delete(nom_fichier_tmp)
'Je quitte Word.
word.Quit()
word = Nothing
'Dans ce 1er exemple, mon fichier Word final est correct.
* Ceci ne fonctionne pas correctement :
'J'ouvre un objet word.
Dim word As New Word.Application
'Je copie mon premier fichier Word source vers un nouveau fichier
temporaire.
Dim nom_fichier_tmp As String = My.Computer.FileSystem.GetTempFileName
IO.File.Copy(nom_fichier_source, nom_fichier_tmp, True)
'J'ouvre le document temporaire.
Dim document_tmp As Word.Document
document_tmp = word.Documents.Open(CType(nom_fichier_tmp, Object))
'Je rentre le texte pour chaque signet.
document_tmp.Bookmarks.Item("bookmarkOption1").Range.Text =
sdr.Item("Option1").ToString
document_tmp.Bookmarks.Item("bookmarkOption2").Range.Text =
sdr.Item("Option2").ToString
'Je sauvegarde le document.
document_tmp.Save()
'Je copie mon 2e fichier Word source vers un nouveau fichier temporaire.
Dim nom_fichier_tmp2 As String = My.Computer.FileSystem.GetTempFileName
IO.File.Copy(nom_fichier_source2, nom_fichier_tmp2, True)
'J'ouvre le document temporaire 2.
Dim document_tmp2 As Word.Document
document_tmp2 = word.Documents.Open(CType(nom_fichier_tmp2, Object))
'Atteindre bookmarkNoms
document_tmp2.Bookmarks.Item("bookmarkNoms").Range.Select()
Dim ligne As Integer = 1
While sdr.Read
'Crée la ligne suivante du tableau si ce n'est pas la 1ère ligne à
écrire
If ligne > 1 Then document_tmp2.Range.Text = vbTab
'Ecrire dans la colonne 1
document_tmp2.Range.Text = sdr.Item("NuméroAuto").ToString
Par contre, même si j'ai réussi à trouver 1 solution pour copier le texte d'un document à la fin d'un autre, j'aimerais savoir s'il existe un moyen de se passer du presse-papiers :
document_tmp2.Content.Copy()
document_tmp.Range.Words.Last.Paste()
Stéphane
"gillardg" <gillardg*remove*@live.be> a écrit dans le message de news:
as tu cherché dans les forums de vbfrance.com ? i
<Stéphane> a écrit dans le message de groupe de discussion :
Bonjour,
Je cherche à générer un document Word dans une application VB.Net.
Pour cela, je me sers de plusieurs fichiers Word sources.
J'arrive à : Créer l'objet Word Ouvrir un document Ecrire du texte à la position d'un signet Sauvegarder le document Quitter Word
Mais je n'arrive pas à faire plusieurs choses : - Positionner le curseur sur un signet qui se trouve dans 1 tableau. Ce tableau est un tableau de 2 lignes et 2 colonnes. Le signet est sur la 1ère colonne de la dernière ligne. - Ecrire du texte à la position du curseur - Positionner le curseur à la cellule suivante (colonne 2 de la 2e ligne) (dans Word, en utilisant la touche Tab) - Créer une nouvelle ligne dans le tableau (tab aussi dans Word) Et enfin, - Copier la totalité de ce document (texte et mise en forme) à la fin d'un autre document.
Merci d'avance pour votre aide, Stéphane.
PS : 2 exemples de code.
* Ceci fonctionne :
'J'ouvre un objet word. Dim word As New Word.Application
'Je copie mon premier fichier Word source vers un nouveau fichier temporaire. Dim nom_fichier_tmp As String = My.Computer.FileSystem.GetTempFileName IO.File.Copy(nom_fichier_source, nom_fichier_tmp, True)
'J'ouvre le document temporaire. Dim document_tmp As Word.Document document_tmp = word.Documents.Open(CType(nom_fichier_tmp, Object))
'Je rentre le texte pour chaque signet. document_tmp.Bookmarks.Item("bookmarkOption1").Range.Text = sdr.Item("Option1").ToString document_tmp.Bookmarks.Item("bookmarkOption2").Range.Text = sdr.Item("Option2").ToString
'Je sauvegarde le document. document_tmp.Save()
'Je ferme le document temporaire. document_tmp.Close() document_tmp = Nothing
'Je copie le fichier temporaire vers le document final. IO.File.Copy(nom_fichier_tmp, nom_fichier, True)
'J'efface le fichier temporaire IO.File.Delete(nom_fichier_tmp)
'Je quitte Word. word.Quit() word = Nothing
'Dans ce 1er exemple, mon fichier Word final est correct.
* Ceci ne fonctionne pas correctement :
'J'ouvre un objet word. Dim word As New Word.Application
'Je copie mon premier fichier Word source vers un nouveau fichier temporaire. Dim nom_fichier_tmp As String = My.Computer.FileSystem.GetTempFileName IO.File.Copy(nom_fichier_source, nom_fichier_tmp, True)
'J'ouvre le document temporaire. Dim document_tmp As Word.Document document_tmp = word.Documents.Open(CType(nom_fichier_tmp, Object))
'Je rentre le texte pour chaque signet. document_tmp.Bookmarks.Item("bookmarkOption1").Range.Text = sdr.Item("Option1").ToString document_tmp.Bookmarks.Item("bookmarkOption2").Range.Text = sdr.Item("Option2").ToString
'Je sauvegarde le document. document_tmp.Save()
'Je copie mon 2e fichier Word source vers un nouveau fichier temporaire. Dim nom_fichier_tmp2 As String = My.Computer.FileSystem.GetTempFileName IO.File.Copy(nom_fichier_source2, nom_fichier_tmp2, True)
'J'ouvre le document temporaire 2. Dim document_tmp2 As Word.Document document_tmp2 = word.Documents.Open(CType(nom_fichier_tmp2, Object))
'Atteindre bookmarkNoms document_tmp2.Bookmarks.Item("bookmarkNoms").Range.Select() Dim ligne As Integer = 1
While sdr.Read
'Crée la ligne suivante du tableau si ce n'est pas la 1ère ligne à écrire If ligne > 1 Then document_tmp2.Range.Text = vbTab
'Ecrire dans la colonne 1 document_tmp2.Range.Text = sdr.Item("NuméroAuto").ToString