Besoin d'aide pour un code .COM a mettre en .NET...
samuss
Messages postés18Date d'inscriptionmardi 8 août 2006StatutMembreDernière intervention 8 janvier 2009
-
29 mai 2008 à 10:44
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 2014
-
6 juin 2008 à 19:14
Bonjour,
J'ai trouvé ce code sur internet permettant de transférer des données depuis vb à word, le problème c'est que c'est pour vb6 et moi je travaille sous vb2008 à savoir en .net, il me faudrait donc l'équivalent en .net, vu que quand j'ajoute n'importes quelle référence word disponible, cela ne marche toujours pas. C'est plus ou moins vital pour moi ^^" je dois faire ça en guise de stage, et je vous avouerai que votre aide me serai précieuse^^.
Dim MyWord As Word.Application
If Text1.Text "" And Text2.Text "" Then
MsgBox "Remplissez au moins une donnée."
Text1.SetFocus
Exit Sub
End If
Set MyWord = New Word.Application
With MyWord
.Documents.Open (PathDocu & "LettreW.doc")
.Visible = True
.ActiveDocument.Bookmarks("date").Range.Text = Format(Date, "dd mmmm yyyy")
.ActiveDocument.Bookmarks("nom").Range.Text = UCase(Text1.Text)
.ActiveDocument.Bookmarks("prénom").Range.Text = Text2.Text
' si vous désirez utiliser plusieurs fois les mêmes données, vous devez
' créer des signets différents
.ActiveDocument.Bookmarks("prénom2").Range.Text = Text2.Text
End With
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 29 mai 2008 à 21:34
Pour ce qui est d'utiliser la référence Word en .Net tu ne vas finalement pas avoir beaucoup de différence :
Dim MyWord As Microsoft.Office.Interop.Word.Application
If Text1.Text "" And Text2.Text "" Then
MessageBox.Show("Remplissez au moins une donnée.")
Text1.Focus()
Exit Sub
End If
<strike>Set</strike> MyWord = New Microsoft.Office.Interop.Word.Application
With MyWord
.Documents.Open(PathDocu & "LettreW.doc")
.Visible = True
.ActiveDocument.Bookmarks("date").Range.Text = Date.Now.ToString("dd MMM yyyy")
.ActiveDocument.Bookmarks("nom").Range.Text = <strike>UCase(</strike>Text1.Text.ToUpper
.ActiveDocument.Bookmarks("prénom").Range.Text = Text2.Text
' si vous désirez utiliser plusieurs fois les mêmes données, vous devez
' créer des signets différents
.ActiveDocument.Bookmarks("prénom2").Range.Text = Text2.Text
End With
Application.DoEvents()
MyWord = Nothing
Le code qui est barré est évidement à supprimer, je l'ai laisser pour que tu vois la différence.
Il te faut évidement rajouter la référence Microsoft Word dans les propriétés du projet.
NOTA : MsgBox et UCase (entre-autres) existent bien en .Net, ils sont fournis par l'assembly Microsoft.VisualBasic, mais c'est du code VB6. Cet assembly existe pour une certaine compatibilité avec VB6.
Personnellement, je décoche systématiquement cet assembly, des références du projet. Cela m'oblige à faire que du code .Net et ne pas garder les vieilles habitudes de VB6. Cela oblige surtout à trouver les équivalents aux anciennes fonctions de VB6. Je t'ai donner 2 exemples avec MessageBox.Show et Text1.Text.ToUpper
samuss
Messages postés18Date d'inscriptionmardi 8 août 2006StatutMembreDernière intervention 8 janvier 2009 6 juin 2008 à 12:14
Je n'y comprends plus grands chose, j'ai supprimer la référence Interop dans mes références ajoutées au projet, et là il me la reconnait O_o (windobe powaa...^^) bon toujours est il que cela fonctionne. Merci beaucoup casy.
Une dernière petite question pour la route, quel est la commande pour lancer word, parce que je suis obligé de le lancer avant pour pouvoir avoir ma page personnalisée qui se remplisse...