Problème de membre

Résolu
cs_into Messages postés 41 Date d'inscription mardi 23 janvier 2007 Statut Membre Dernière intervention 6 mars 2007 - 30 janv. 2007 à 16:43
cs_into Messages postés 41 Date d'inscription mardi 23 janvier 2007 Statut Membre Dernière intervention 6 mars 2007 - 31 janv. 2007 à 09:11
Voila j'ai ce code dans la form vidéo.form1 il doit me permettre de récupérer les propriétés d'un doc word(je l'ai trouvé sur ce site)

seulemnt j'ai une erreur a la variable "hwnd"(surligné en rouge) et on me dit qu'elle n'est pas membre de vidéo.form1!
je ne comprend pas pourquoi pouvez-vous m'aidez svp!!
je sature!
si vs avez un code plu simple pour récupérer un doc word en gardant ses proriété je suis preuneur!
merci
 



'pour + d'info sur cette api veuillez consulter sa source disponible sur ce site ou dans la compil









Declare



Function
ShellExecute

Lib



"shell32.dll"



Alias



"ShellExecuteA"
(

ByVal
hwnd

As



Long
,

ByVal
lpOperation

As



String
,

ByVal
lpFile

As



String
,

ByVal
lpParameters

As



String
,

ByVal
lpDirectory

As



String
,

ByVal
nShowCmd

As



Long
)

As



Long 








Public



Sub
getworddocproperties(

ByVal
file

As



String
)


'crée un objet microsoft word






Dim
msword

As
Word.Applicationmsword = (


"E:\ETCHARTE Antony\essai.doc"
)


'ouvre le fichier






ShellExecute(Me.hwnd
"open", file) ', ByVal 0&, 0&, 1






'beaucoup d'autres propriété sont disponibles

MsgBox(




"il y a "
+ Str(msword.ActiveDocument.Paragraphs) &

"paragraphes dans le document "
& file)


End



Sub




into7...

9 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
30 janv. 2007 à 17:03
En vb.net, Me.hwnd est devenu Me.Handle

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
30 janv. 2007 à 17:04
Attention aux types de variables qui ont changés en .Net.

Lorsque tu utilise les api, tout ce qui du Long dans l'api est à déclaré comme Integer en vb.net

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
30 janv. 2007 à 18:23
Dsl, je n'avais pas vraiment regarder ton programme tout à l'heure.

Alors plusieurs points ne vont pas.

- D'abords, tu utilise un objet Word pour lire ton document. Mais pour pouvoir l'utiliser, il faut créer une instance de cet objet en utilisant le mot clé New. Soit directement dans la déclaration (comme j'ai fais dans le code ci dessous) soit explicitement à l'execution en rajoutant une ligne msword = New Word.Application

- Ensuite tu veux ouvrir, j'imagine, le document dont le chemin est passé par la variable file. Dans ce cas, il ne faut pas le mettre en dur dans le code. De plus, c'est la source de ta second erreur, tu ne peux pas associer directement le nom du fichier à ton objet msword. Il faut utiliser les methodes de ton objet pour lui dire d'aller ouvrir le document voulu.
- Ton document, pour etre associé à ton objet msword et donc manipulable par lui, doit etre ouvert par lui. En utilisant la commande Shell, tu vas, ici, ouvrir un second exemplaire du document, mais il ne sera pas accessible par msword. Donc la commande Shell est inutile.

- Ensuite j'ai corriger 2/3 trucs dans le code et enfin j'ai rajouter la fermeture de l'application Word. Car si tu ne le fais pas, elle reste ouverte, et comme elle n'a pas été affichée à l'écran, elle ne se voit pas et tu ne le sais pas. Il faut systématiquement penser à la fermer.

On obtient donc un code comme celui-ci, à toi de le paufiner pour crrespndre à tes besoins :

Public Sub getworddocproperties(ByVal file As String)

        'crée un objet
microsoft word
        Dim msword As New Word.Application

        'ouvre le fichier
        msword.Documents.Open(file)

        'beaucoup d'autres propriété sont
disponibles
        MessageBox.Show("il y a " + CStr(msword.ActiveDocument.Paragraphs.Count) & " paragraphes dans le document " & file)

        ' Ne pas
oublier de fermer l'application Word, sinon elle reste en
mémoire
        msword.Quit()

End Sub

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
30 janv. 2007 à 16:49
Tu es sous vb6 ou vb.net ?????

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_into Messages postés 41 Date d'inscription mardi 23 janvier 2007 Statut Membre Dernière intervention 6 mars 2007
30 janv. 2007 à 16:56
sous vn.net!
into7...
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
30 janv. 2007 à 17:00
Remplace déjà Me.hwnd par 0, pour voir... (tu n'es pas sous VB mais sous VBA !)
0
cs_into Messages postés 41 Date d'inscription mardi 23 janvier 2007 Statut Membre Dernière intervention 6 mars 2007
30 janv. 2007 à 17:09
Je comprend pas tout de ce que vous me dites! je débute pour un stage en entreprise sous vb.net donc j'ai du mal au début!
j'vais faire quelque modif

into7...
0
cs_into Messages postés 41 Date d'inscription mardi 23 janvier 2007 Statut Membre Dernière intervention 6 mars 2007
30 janv. 2007 à 17:16
j'ai fait les modif que vous m'avez conseillé ("casy") mais bon maintenat j'ai une erreur "Impossible d'effectuer un cast d'un objet de type 'System.String' en type 'Word.Application'." donc voilà je nage dans le bonheur!

into7...
0
cs_into Messages postés 41 Date d'inscription mardi 23 janvier 2007 Statut Membre Dernière intervention 6 mars 2007
31 janv. 2007 à 09:11
Bonjour a Vous Casy !!!
Je dois "te tirer un grand coup de pied dans le chapeau "(comme dirait Nicolas Cantelou)!Grâce vos explication mon code fonctionne...
Je ne sais comment vous remercier!
Mais où avez-vous appris tous ces petits points?
Ma journée commence bien grâce à àvous!
encore merci

into7...vous salue
0
Rejoignez-nous