Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1329 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VB] Modifier les propriétés d'un document word depuis appli vb

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4  5
Page Précédente
Auteur Sujet :

[VB] Modifier les propriétés d'un document word depuis appli vb

n°511759
urd-sama
waste of space
Posté le 10-09-2003 à 15:06:45  profilanswer
 

Voilà, je souffre depuis hier pour faire une chose aussi ridicule, aussi demande-je votre aide :'(
 
mon programme est simple (sic). il prend des infos de l'utilisateur, puis créé une arborescence de dossiers/fichiers. Les documents word (modèles) ont des propriétés personnalisées qu'il faudra que je modifie après la création.
 
Donc le point sensible, j'ai réussis à copier le fichier word, mais il faut que j'accède au document, puis aux propriétés. J'ai essayé plusieurs techniques après des recherches laborieuses (pas d'aide ni de bouquins au boulot  :pfff: ). Voici ce que cela donne:
 

Code :
  1. Private Sub cmdGenerer_Click()
  2.   Dim Word_Application As Word.Application
  3.   Set Word_Application = New Word.Application
  4.   Dim Word_Documents As Word.Documents
  5.   [...]
  6.   FileCopy "file"
  7.   Set Word_Documents = Word_Application.Documents
  8.   Word_Documents.Open (file)
  9.   Word_Documents.Close
  10.   [...]
  11.   Word_Application.Quit
  12.   Set Word_Application = Nothing
  13.   diaGeneration.Show vbModal
  14.   [...]
  15. End Sub


ca c'est ok, ca fonctionne.
Et maintenant je n'arrive pas à trouver ce que je dois écrire pour accéder aux propriétés. j'ai ce code provenant d'un script vba pour word:
ActiveDocument.BuiltInDocumentProperties.Item("xxx" ) = "test"
mais je ne sais pas comment l'utiliser et je désespère.
 
merci pour votre future aide :'(

mood
Publicité
Posté le 10-09-2003 à 15:06:45  profilanswer
 

n°511811
drasche
Posté le 10-09-2003 à 15:44:49  profilanswer
 

Code :
  1. Word_Documents.ActiveDocument.BuiltInDocumentProperties.Item("xxx" ) = "test"


 
?

n°511813
urd-sama
waste of space
Posté le 10-09-2003 à 15:45:49  profilanswer
 

drasche a écrit :

Code :
  1. Word_Documents.ActiveDocument.BuiltInDocumentProperties.Item("xxx" ) = "test"


 
?


j'essaye ca demain et je te redis :'(

n°512169
urd-sama
waste of space
Posté le 11-09-2003 à 08:18:50  profilanswer
 

ca me fait une erreur sur ".ActiveDocument" avec "method or data member not found" :'(

n°512204
Poipoi
Vive Grumly
Posté le 11-09-2003 à 09:29:27  profilanswer
 

Word_Documents(1).BuiltInDocumentProperties.Item("xxx" ) = "test"


Message édité par Poipoi le 11-09-2003 à 09:30:42

---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°512205
Poipoi
Vive Grumly
Posté le 11-09-2003 à 09:31:58  profilanswer
 

ou
 

Word_Application.ActiveDocument.BuiltInDocumentProperties.Item("xxx" ) = "test"


 
?
 
 :hello:


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°512210
urd-sama
waste of space
Posté le 11-09-2003 à 09:38:38  profilanswer
 

Poipoi a écrit :

ou

Word_Application.ActiveDocument.BuiltInDocumentProperties.Item("xxx" ) = "test"




haaaaaaaaaaannn... je me suis trompée d'objet dès le début!!
je vais essayer tout ca et je redonne des nouvelles

n°512270
urd-sama
waste of space
Posté le 11-09-2003 à 10:57:42  profilanswer
 

alors effectivement, je m'étais trompée d'objet, et ca marche (presque).
 
Mon problème actuel, c'est que j'arrive à modifier une propriété "par défaut" (ex: title, author, etc), mais je n'arrive pas à modifier une propriété "custom".
 
ca marche:
Word_Application.ActiveDocument.BuiltInDocumentProperties.Item("Title" ) = "Montitre"
 
marche pas:
Word_Application.ActiveDocument.CustomDocumentProperties.Item("xxx" ).Value = "test"
 
j'ai également essayé sans le .value, mais rien à faire, il n'update pas la propriété concernée.
 
Qqun a une idée?

n°512305
Poipoi
Vive Grumly
Posté le 11-09-2003 à 11:23:00  profilanswer
 

CustomDocumentProperties, propriété
 
Renvoie une collection DocumentProperties qui représente toutes les propriétés personnalisées du document spécifié. En lecture seule.
Pour plus d'informations sur le renvoi d'un seul membre d'une collection, consultez Renvoi d'un objet à partir d'une collection.


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°512307
urd-sama
waste of space
Posté le 11-09-2003 à 11:24:42  profilanswer
 

Poipoi a écrit :

CustomDocumentProperties, propriété
Renvoie une collection DocumentProperties qui représente toutes les propriétés personnalisées du document spécifié. En lecture seule.
Pour plus d'informations sur le renvoi d'un seul membre d'une collection, consultez Renvoi d'un objet à partir d'une collection.


source?
merci :jap:
 
ajout d'un collègue: avec vba pour word ca fonctionne, mais à travers vb rien à faire :/


Message édité par urd-sama le 11-09-2003 à 11:25:50
mood
Publicité
Posté le 11-09-2003 à 11:24:42  profilanswer
 

n°512308
Poipoi
Vive Grumly
Posté le 11-09-2003 à 11:25:03  profilanswer
 

Cet exemple montre comment insérer à la fin du document actif une liste de propriétés prédéfinies personnalisées.
 
Set myRange = ActiveDocument.Content
myRange.Collapse Direction:=wdCollapseEnd
For Each prop In ActiveDocument.CustomDocumentProperties
    With myRange
        .InsertParagraphAfter
        .InsertAfter prop.Name & "= "
        .InsertAfter prop.Value
    End With
Next
 
Cet exemple montre comment ajouter à Ventes.doc une propriété prédéfinie personnalisée.
 
thename = InputBox("Veuillez taper votre nom", "Nom" )
Documents("Ventes.doc " ).CustomDocumentProperties.Add _na
    Name:="VotreNom", LinkToContent:=False, Value:=thename, _
        Type:=msoPropertyTypeString


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°512309
Poipoi
Vive Grumly
Posté le 11-09-2003 à 11:25:33  profilanswer
 

Urd-sama a écrit :


source?
merci :jap:


L'aide...


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°512311
urd-sama
waste of space
Posté le 11-09-2003 à 11:27:11  profilanswer
 

voir mon edit :/

n°512313
Poipoi
Vive Grumly
Posté le 11-09-2003 à 11:29:30  profilanswer
 

Tiré de l'aide fournie par VB6 (j'C po où il va la chercher)
C bien précisé que C en lecture seule
si tu veux la modif il doit y avoir moyen de la virer et d'en rajouter une (cf exemple)


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°512314
urd-sama
waste of space
Posté le 11-09-2003 à 11:30:59  profilanswer
 

okay je vais matter tout ca merci
(au fait je fais pas la faignasse pour l'aide, mais je l'ai tout simplement pas sur mon vb6  :cry: )

n°512317
drasche
Posté le 11-09-2003 à 11:33:35  profilanswer
 

au pire tu peux regarder sur http://msdn.microsoft.com/ (pour peu que tu maîtrises l'anglais évidemment)

n°512318
Poipoi
Vive Grumly
Posté le 11-09-2003 à 11:34:22  profilanswer
 

Urd-sama a écrit :

okay je vais matter tout ca merci
(au fait je fais pas la faignasse pour l'aide, mais je l'ai tout simplement pas sur mon vb6  :cry: )


t'as pas de CD d'office ?
 
on peut pas bosser correctement sans l'aide en ligne  :o


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°512320
urd-sama
waste of space
Posté le 11-09-2003 à 11:36:03  profilanswer
 

merci :'(

n°512322
Poipoi
Vive Grumly
Posté le 11-09-2003 à 11:39:16  profilanswer
 
n°512323
urd-sama
waste of space
Posté le 11-09-2003 à 11:42:13  profilanswer
 


ca dit ca:
ActiveDocument.CustomDocumentProperties("Client" ).Value="John Smith"
 
et j'ai effectivement rajouter l'objet devant, et c'est pas ok.
 
mais vous casser pas, je vais étudier ceci à mon retour au boulot demain:
thename = InputBox("Please type your name", "Name" )
Documents("Sales.doc" ).CustomDocumentProperties.Add _
    Name:="YourName", LinkToContent:=False, Value:=thename, _
        Type:=msoPropertyTypeString
je pense que ca doit être la bonne direction


Message édité par urd-sama le 11-09-2003 à 11:42:25
n°512327
Poipoi
Vive Grumly
Posté le 11-09-2003 à 11:44:41  profilanswer
 

Urd-sama a écrit :

alors effectivement, je m'étais trompée d'objet, et ca marche (presque).
 
Mon problème actuel, c'est que j'arrive à modifier une propriété "par défaut" (ex: title, author, etc), mais je n'arrive pas à modifier une propriété "custom".
 
ca marche:
Word_Application.ActiveDocument.BuiltInDocumentProperties.Item("Title" ) = "Montitre"
 
marche pas:
Word_Application.ActiveDocument.CustomDocumentProperties.Item("xxx" ).Value = "test"
 
j'ai également essayé sans le .value, mais rien à faire, il n'update pas la propriété concernée.
 
Qqun a une idée?


ça met koi comme erreur ?
pas d'erreur mais pas de changement ?


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°512375
drasche
Posté le 11-09-2003 à 13:13:25  profilanswer
 

Pendant que j'y pense, tu devrais essayer la notation hongroise, c'est bieng :o
 
ça consiste à préfixer (en minuscules) le nom de toute variable par un acronyme représentant le type de ta variable (b pour booléen, s pour single, d pour double, s ou str pour string, obj pour objet, ...). Des fois même il y a un acronyme pour les objets de type courant genre rst pour Recordset. Pour le reste, essayer de faire court, pas employer d'underscore, et mettre une majuscule au début de chaque mot (abrégé si possible) qui constitue la variable.
 
Exemple: Word_Application deviendrait objWordApp. Ca limite aussi la confusion avec le fait que l'underscore est utilisé pour les noms de fonctions répondant aux events (ex: Form_Load).
 
Perso, l'expérience aidant, je limite chaque mot à 3 lettres, et je me suis constitué un dictionnaire de données. Genre pour la notion de document, j'utilise l'acronyme "doc", etc etc...  J'utilise surtout ça dans mes bases de données pour éviter les noms à rallonge :D
 
ooops chuis parti dans mon trip là, désolé :o

n°512994
urd-sama
waste of space
Posté le 12-09-2003 à 08:21:23  profilanswer
 

je reprends tout ca et je teste.
drasche> rassure-toi, d'habitude je fais comme ca, mais là je reprends des exemples et je copie bêtement ;)

n°512996
urd-sama
waste of space
Posté le 12-09-2003 à 08:43:44  profilanswer
 

je suis en train de reprendre ceci:
thename = InputBox("Veuillez taper votre nom", "Nom" )
Documents("Ventes.doc " ).CustomDocumentProperties.Add _na
    Name:="VotreNom", LinkToContent:=False, Value:=thename, _
        Type:=msoPropertyTypeString
 
 
dans cette optique, j'ai déjà voulu afficher la valeur d'une de mes propriétés:
MsgBox Word_Documents("a:/document.dot" ).CustomDocumentProperties.Item("xxx" ).Value
 
j'ai beau essayer toutes les maniclettes, il me met toujours "nom de fichier incorrect". Et d'autre part, c'est bien l'objet document et non application que je dois utiliser?
 
voilà, ma semaine de congé de la semaine prochaine va dépendre de ce truc, alors je retourne m'y coller :'(

n°513014
Poipoi
Vive Grumly
Posté le 12-09-2003 à 09:15:56  profilanswer
 

trop malade pour t'aider


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°513017
urd-sama
waste of space
Posté le 12-09-2003 à 09:21:10  profilanswer
 

Poipoi a écrit :

trop malade pour t'aider


bon rétablissement :'(

n°513020
Poipoi
Vive Grumly
Posté le 12-09-2003 à 09:23:40  profilanswer
 

Urd-sama a écrit :


bon rétablissement :'(


C l'histoire d'une journée  :ange:  
 
put1 pk je suis au taf  :cry:


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°513181
Poipoi
Vive Grumly
Posté le 12-09-2003 à 12:08:49  profilanswer
 

Urd-sama a écrit :

je suis en train de reprendre ceci:
thename = InputBox("Veuillez taper votre nom", "Nom" )
Documents("Ventes.doc " ).CustomDocumentProperties.Add _na
    Name:="VotreNom", LinkToContent:=False, Value:=thename, _
        Type:=msoPropertyTypeString
 
 
dans cette optique, j'ai déjà voulu afficher la valeur d'une de mes propriétés:
MsgBox Word_Documents("a:/document.dot" ).CustomDocumentProperties.Item("xxx" ).Value
 
j'ai beau essayer toutes les maniclettes, il me met toujours "nom de fichier incorrect". Et d'autre part, c'est bien l'objet document et non application que je dois utiliser?
 
voilà, ma semaine de congé de la semaine prochaine va dépendre de ce truc, alors je retourne m'y coller :'(
 


Il faut que le document soit ouvert
oWordApp.Open("MyDoc.doc" )
par exemple
 
 :hello:


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°513187
drasche
Posté le 12-09-2003 à 12:28:52  profilanswer
 

d'après ce que je vois, il y a un espace de trop dans le nom "ventes.doc ". S'il te sort nom de fichier incorrect, essaie de lire la propriété Name de ton document, afin de vérifier que ça correspond. Tiens au fait tu n'utilises plus ActiveDocument?

n°513199
urd-sama
waste of space
Posté le 12-09-2003 à 12:42:14  profilanswer
 

il semblerait que ca fonctionne à présent, j'ai laissé tomber à nouveau avec l'objet document.
 
voilà pour que ca fonctionne:

Code :
  1. Private Sub cmdGenerer_Click()
  2.   Dim Word_Application As Word.Application
  3.   Set Word_Application = New Word.Application
  4.   Dim Word_Documents As Word.Documents
  5.   Dim i As Integer
  6.   [...]
  7.   FileCopy file
  8.   Set Word_Documents = Word_Application.Documents
  9.   Word_Documents.Open (file)
  10.   Word_Application.ActiveDocument.CustomDocumentProperties.Item("xxx" ) = "test"
  11.   Word_Application.ActiveDocument.Save
  12.   Word_Documents.Close
  13.   Word_Application.Quit
  14.   Set Word_Application = Nothing
  15. End Sub


1. pas de .value après le item("xxx" )
2. faire un save
3. normalement j'ai une boucle, et il faut faire Word_Application.Quit à chaque fois, sinon je crois que j'avais plusieurs applications word en mémoire et ca fouttait la grosse merde.
 
je crois que cette fois c'est ok, merci beaucoup pour m'avoir aidée. bon accessoirement j'ai d'autres trucs à faire, mais je pense pas y arriver aujourd'hui, donc la semaine de vacances est sucrée :'(
 
par exemple j'ai un combobox que je mets en style dropdown list (pour qu'on puisse pas entrer qqch manuellement). Et de cette façon je ne trouve pas comment mettre une valeur par défaut (la propriété text est le nom du combobox en lecture seule). enfin je vais encore chercher un peu
 
snif :'(

n°513203
drasche
Posté le 12-09-2003 à 12:48:00  profilanswer
 

pour le combobox, tu dois toujours passer par la propriété ListIndex: -1 pour rien de sélectionné, et une valeur de 0..ListCount-1 pour la positionner.

n°513255
urd-sama
waste of space
Posté le 12-09-2003 à 13:30:11  profilanswer
 

ca marche  :love:  
c'est tellement con que je devrais avoir honte, mais merci  :cry:  :cry:

n°513259
drasche
Posté le 12-09-2003 à 13:38:20  profilanswer
 

n'empêche qu'une boucle sur une séquence instancier-désinstancier Word, c'est pas glop. Garde ton code qui marche de côté et essaie de débugger ce qui va pas avec toutes ces instances de Word :/
 
D'après ce que je vois dans mon code:
 

Code :
  1. ' Fermer le document courant
  2. Call objWord.ActiveDocument.Close(0)  ' wdDoNotSaveChanges
  3. ' Fermer Word
  4. Call objWord.Quit(0) ' wdDoNotSaveChanges
  5. Set objWord = Nothing


 
Les vrais paramètres (de type Enum) sont en commentaires mais c'est bien leur valeur correspondante qu'on utilise, c'est juste qu'on référence pas Word dans le projet. Je les ai mis dans mon code pour que ce soit plus clair ;)

n°513261
urd-sama
waste of space
Posté le 12-09-2003 à 13:43:10  profilanswer
 

dakord, je finis déjà le reste et j'essayerai ca à la rentrée (j'ai franchement pas envie aujourd'hui  :fou: )
merci beaucoup :jap:

n°513446
Poipoi
Vive Grumly
Posté le 12-09-2003 à 15:24:59  profilanswer
 

au fait...
pk t'avais besoin de ça ? je suis sûr kil y avait mieux ;)


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°513467
urd-sama
waste of space
Posté le 12-09-2003 à 15:39:32  profilanswer
 

Poipoi a écrit :

au fait...
pk t'avais besoin de ça ? je suis sûr kil y avait mieux ;)


paske je suis obligée

n°513476
Poipoi
Vive Grumly
Posté le 12-09-2003 à 15:45:23  profilanswer
 

Urd-sama a écrit :


paske je suis obligée


 :lol:  
 
C pas vraiment la réponse que j'attendais ;)
 
Il y a bien un but ? ou juste le faire pour le faire ?  :D


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°513481
urd-sama
waste of space
Posté le 12-09-2003 à 15:53:04  profilanswer
 

Poipoi a écrit :


 :lol:  
C pas vraiment la réponse que j'attendais ;)
Il y a bien un but ? ou juste le faire pour le faire ?  :D  


si j'étais mauvaise langue, je dirais "faire un programme à la con qui servira à rien, juste pour montrer qu'on sait en faire"
mais vu que je suis pas mauvaise langue (sic) je dirai simplement qu'on le fait pour épater la galerie (c'est pas mieux en fait, mais bon).

n°513490
Poipoi
Vive Grumly
Posté le 12-09-2003 à 16:00:44  profilanswer
 

Urd-sama a écrit :


si j'étais mauvaise langue, je dirais "faire un programme à la con qui servira à rien, juste pour montrer qu'on sait en faire"
mais vu que je suis pas mauvaise langue (sic) je dirai simplement qu'on le fait pour épater la galerie (c'est pas mieux en fait, mais bon).


ça épate des gens ça ? :heink:


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°513494
urd-sama
waste of space
Posté le 12-09-2003 à 16:05:10  profilanswer
 

Poipoi a écrit :


ça épate des gens ça ? :heink:  


je suis dans une boite ou les gens font leurs pages web avec word

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VB] Modifier les propriétés d'un document word depuis appli vb

 

Sujets relatifs
vba word : calculer la taille optimale pour occuper toute la largeurKiller le process d'une instance ole Word
Piece jointe à un document wordreduire taille de fichier word
Lancer Word à partir de IE[architecture] appli-web
Appli PHP de gestion d'emailsListe de process word et excel via api
Propriétés de classes 
Plus de sujets relatifs à : [VB] Modifier les propriétés d'un document word depuis appli vb


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR