Modifier les propriétés d'un document word depuis appli vb [VB] - VB/VBA/VBS - Programmation
Marsh Posté le 10-09-2003 à 15:44:49
Code :
|
?
Marsh Posté le 10-09-2003 à 15:45:49
drasche a écrit :
|
j'essaye ca demain et je te redis
Marsh Posté le 11-09-2003 à 08:18:50
ca me fait une erreur sur ".ActiveDocument" avec "method or data member not found"
Marsh Posté le 11-09-2003 à 09:29:27
Word_Documents(1).BuiltInDocumentProperties.Item("xxx" ) = "test" |
Marsh Posté le 11-09-2003 à 09:31:58
ou
Word_Application.ActiveDocument.BuiltInDocumentProperties.Item("xxx" ) = "test" |
?
Marsh Posté le 11-09-2003 à 09:38:38
Poipoi a écrit : ou
|
haaaaaaaaaaannn... je me suis trompée d'objet dès le début!!
je vais essayer tout ca et je redonne des nouvelles
Marsh Posté le 11-09-2003 à 10:57:42
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?
Marsh Posté le 11-09-2003 à 11:23:00
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.
Marsh Posté le 11-09-2003 à 11:24:42
Poipoi a écrit : CustomDocumentProperties, propriété |
source?
merci
ajout d'un collègue: avec vba pour word ca fonctionne, mais à travers vb rien à faire
Marsh Posté le 11-09-2003 à 11:25:03
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
Marsh Posté le 11-09-2003 à 11:25:33
Urd-sama a écrit : |
L'aide...
Marsh Posté le 11-09-2003 à 11:29:30
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)
Marsh Posté le 11-09-2003 à 11:30:59
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 )
Marsh Posté le 11-09-2003 à 11:33:35
au pire tu peux regarder sur http://msdn.microsoft.com/ (pour peu que tu maîtrises l'anglais évidemment)
Marsh Posté le 11-09-2003 à 11:34:22
Urd-sama a écrit : okay je vais matter tout ca merci |
t'as pas de CD d'office ?
on peut pas bosser correctement sans l'aide en ligne
Marsh Posté le 11-09-2003 à 11:39:16
http://groups.google.fr/groups?hl= [...] ty&spell=1
http://groups.google.fr/groups?hl= [...] 6spell%3D1
Marsh Posté le 11-09-2003 à 11:42:13
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
Marsh Posté le 11-09-2003 à 11:44:41
Urd-sama a écrit : alors effectivement, je m'étais trompée d'objet, et ca marche (presque). |
ça met koi comme erreur ?
pas d'erreur mais pas de changement ?
Marsh Posté le 11-09-2003 à 13:13:25
Pendant que j'y pense, tu devrais essayer la notation hongroise, c'est bieng
ç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
ooops chuis parti dans mon trip là, désolé
Marsh Posté le 12-09-2003 à 08:21:23
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
Marsh Posté le 12-09-2003 à 08:43:44
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("adocument.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
Marsh Posté le 12-09-2003 à 09:15:56
trop malade pour t'aider
Marsh Posté le 12-09-2003 à 09:21:10
ReplyMarsh Posté le 12-09-2003 à 09:23:40
Urd-sama a écrit : |
C l'histoire d'une journée
put1 pk je suis au taf
Marsh Posté le 12-09-2003 à 12:08:49
Urd-sama a écrit : je suis en train de reprendre ceci: |
Il faut que le document soit ouvert
oWordApp.Open("MyDoc.doc" )
par exemple
Marsh Posté le 12-09-2003 à 12:28:52
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?
Marsh Posté le 12-09-2003 à 12:42:14
il semblerait que ca fonctionne à présent, j'ai laissé tomber à nouveau avec l'objet document.
voilà pour que ca fonctionne:
Code :
|
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
Marsh Posté le 12-09-2003 à 12:48:00
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.
Marsh Posté le 12-09-2003 à 13:30:11
ca marche
c'est tellement con que je devrais avoir honte, mais merci
Marsh Posté le 12-09-2003 à 13:38:20
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 :
|
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
Marsh Posté le 12-09-2003 à 13:43:10
dakord, je finis déjà le reste et j'essayerai ca à la rentrée (j'ai franchement pas envie aujourd'hui )
merci beaucoup
Marsh Posté le 12-09-2003 à 15:24:59
au fait...
pk t'avais besoin de ça ? je suis sûr kil y avait mieux
Marsh Posté le 12-09-2003 à 15:39:32
Poipoi a écrit : au fait... |
paske je suis obligée
Marsh Posté le 12-09-2003 à 15:45:23
Urd-sama a écrit : |
C pas vraiment la réponse que j'attendais
Il y a bien un but ? ou juste le faire pour le faire ?
Marsh Posté le 12-09-2003 à 15:53:04
Poipoi 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).
Marsh Posté le 12-09-2003 à 16:00:44
Urd-sama a écrit : |
ça épate des gens ça ?
Marsh Posté le 12-09-2003 à 16:05:10
Poipoi a écrit : |
je suis dans une boite ou les gens font leurs pages web avec word
Marsh Posté le 10-09-2003 à 15:06:45
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 ). Voici ce que cela donne:
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