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

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4  5
Auteur Sujet :

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

n°515823
walli
Posté le 16-09-2003 à 16:41:35  profilanswer
 

Reprise du message précédent :

Poipoi a écrit :


G 150 000 000 * pire que ça


 
Si tu voyais le code en entier, tu dirais ptet pas ca  :whistle:


---------------
NP :
mood
Publicité
Posté le 16-09-2003 à 16:41:35  profilanswer
 

n°515824
drasche
Posté le 16-09-2003 à 16:42:03  profilanswer
 

Poipoi a écrit :

tout est lent à traiter en VB  :o  


certes mais surtout les String [:aloy]

n°515825
Poipoi
Vive Grumly
Posté le 16-09-2003 à 16:42:46  profilanswer
 

walli a écrit :


 
Si tu voyais le code en entier, tu dirais ptet pas ca  :whistle:  


ya un option explicit ?


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

walli a écrit :

Si tu voyais le code en entier, tu dirais ptet pas ca  :whistle:  


pitié, déjà que j'en morflerai de nouveau lundi, je préfère finir mes vacances sans avoir à subir un traumatisme [:ddr555]

n°515828
Poipoi
Vive Grumly
Posté le 16-09-2003 à 16:43:54  profilanswer
 

drasche a écrit :


certes mais surtout les String [:aloy]


ça dépend... avec des memcopy ça peu aller...  :whistle:


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°515829
walli
Posté le 16-09-2003 à 16:45:15  profilanswer
 

Poipoi a écrit :


ya un option explicit ?


yaisse
 

drasche a écrit :


pitié, déjà que j'en morflerai de nouveau lundi, je préfère finir mes vacances sans avoir à subir un traumatisme [:ddr555]


t'inquiete, vais pas poster le code, ca vous avancerait pas a grand chose de toutes manieres...  [:spamafote]


---------------
NP :
n°515831
Poipoi
Vive Grumly
Posté le 16-09-2003 à 16:46:08  profilanswer
 

walli a écrit :


yaisse
 
 


donc j'avais raison  :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°515832
drasche
Posté le 16-09-2003 à 16:47:39  profilanswer
 

Poipoi a écrit :

donc j'avais raison  :cry:  


t'as pas d'option explicit dans ton code? [:xx_xx]
 
SHAAAAAAAAAAAME!

n°515833
Poipoi
Vive Grumly
Posté le 16-09-2003 à 16:48:21  profilanswer
 

drasche a écrit :


t'as pas d'option explicit dans ton code? [:xx_xx]
 
SHAAAAAAAAAAAME!


spa mon code  :cry:  
 
je fais de la maintenance  :cry:  :cry:  :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°515834
walli
Posté le 16-09-2003 à 16:54:08  profilanswer
 

drasche a écrit :


t'as pas d'option explicit dans ton code? [:xx_xx]
 
SHAAAAAAAAAAAME!


 
raaaaaaa, j'ai la musique dans la tete maintenant /o\


---------------
NP :
mood
Publicité
Posté le 16-09-2003 à 16:54:08  profilanswer
 

n°515837
drasche
Posté le 16-09-2003 à 16:56:39  profilanswer
 

quelle musique? :??:
 
(pas fait exprès pas tapai /o\ :sweat:)

n°515839
urd-sama
waste of space
Posté le 16-09-2003 à 16:58:07  profilanswer
 

walli a écrit :


(désolée de sqatter ton topic urd)


pas de prob, j'apprends des trucs comme ca  :hello:

n°515840
walli
Posté le 16-09-2003 à 16:58:37  profilanswer
 

drasche a écrit :

quelle musique? :??:
 
(pas fait exprès pas tapai /o\ :sweat:)


 
j'ai presque honte de le dire..
[PARLER mode='tout bas']
Ophélie winter : shame on you
[/PARLER]
 
[:neowen]


---------------
NP :
n°515850
drasche
Posté le 16-09-2003 à 17:11:57  profilanswer
 

<hs>
chuis content de plus regarder la télé tiens, je pourrais tomber sur un de ses clips [:totoz]
</hs>

n°516900
urd-sama
waste of space
Posté le 18-09-2003 à 10:07:42  profilanswer
 

bwallé, je reviens à la charge. j'ai un code qui marche mais qui est affreux et hyper lent (vous comprendrez vite pourquoi).
je ne sais pas trop comment faire autrement, avec ces objets word qui trainent partout et les appels des fonctions. donc si l'inspiration vous vient n'hésitez pas!
 
voici le code en question:
 

Code :
  1. Private Sub cmdGenerer_Click()
  2.   Dim vTemp
  3.   Dim vOK As Integer
  4.   Dim objFSO As Scripting.FileSystemObject
  5.   Set objFSO = New Scripting.FileSystemObject
  6.   Dim i As Integer
  7.   If txtNom.Text = "" Or txtAbreviation = "" Or txtEmplacement = "" Or cboProcessus.Text = "" Or lstDocuments = "" Or cboClassification.Text = "" Or txtUnit = "" Or cboLangue = "" Then
  8.     vTemp = MsgBox("Red fields have to be filled.", vbOKOnly, "Warning" )
  9.   Else
  10.     If objFSO.FolderExists(txtEmplacement.Text & "/" & txtAbreviation.Text & "/" ) Then
  11.       vOK = MsgBox("Project already exists. All files will be overwrited. Are you sure to continue?", vbOKCancel, "Warning" )
  12.     Else
  13.       vOK = 1
  14.     End If
  15.     If vOK = 1 Then
  16.       Call CreateTree
  17.       For i = 1 To intNbDoc - 1
  18.         If lstDocuments.Selected(i - 1) = True Then
  19.           FileCopy "a:/" & aryInfo(i)(5), txtEmplacement.Text & "/" & txtAbreviation.Text & "/" & aryInfo(i)(0) & "/" & aryInfo(i)(1) & "_" & txtAbreviation.Text & "_" & aryInfo(i)(6)
  20.        
  21.           Call fSetProperties("PropertiesDocLanguage", fSetLanguage(cboLangue.Text), i)
  22.           Call fSetProperties("PropertiesUnit", fSetLanguage(txtUnit.Text), i)
  23.           Call fSetProperties("PropertiesProjectName", fSetLanguage(txtNom.Text), i)
  24.           Call fSetProperties("PropertiesProjectAbbr", fSetLanguage(txtAbreviation.Text), i)
  25.           Call fSetProperties("PropertiesProjectManager", fSetLanguage(txtProjectManager.Text), i)
  26.           Call fSetProperties("PropertiesTransmitter", fSetLanguage(txtTransmitter.Text), i)
  27.           Call fSetProperties("PropertiesReceiver", fSetLanguage(txtReceiver.Text), i)
  28.           Call fSetProperties("PropertiesClassification", fSetLanguage(cboClassification.Text), i)
  29.         End If
  30.       Next
  31.       vTemp = MsgBox("RUP tree and artifacts has been created on your computer", vbOKOnly, "Warning" )
  32.     End If
  33.     txtNom.Text = ""
  34.     txtAbreviation = ""
  35.     txtEmplacement = ""
  36.     cboProcessus.ListIndex = -1
  37.     lstDocuments.Clear
  38.     txtProjectManager = ""
  39.     txtTransmitter = ""
  40.     txtReceiver = ""
  41.   End If
  42. End Sub
  43. Public Sub fSetProperties(vProperties As String, vText As String, i As Integer)
  44.   Dim Word_Application As Word.Application
  45.   Set Word_Application = New Word.Application
  46.   Dim Word_Documents As Word.Documents
  47.   Set Word_Documents = Word_Application.Documents
  48.   Word_Application.Visible = False
  49.   On Error GoTo remplacer
  50.   Word_Documents.Open (txtEmplacement.Text & "/" & txtAbreviation.Text & "/" & aryInfo(i)(0) & "/" & aryInfo(i)(1) & "_" & txtAbreviation.Text & "_" & aryInfo(i)(6))
  51.   Word_Application.ActiveDocument.CustomDocumentProperties.Item(vProperties) = vText
  52.   Word_Application.ActiveDocument.Saved = False
  53.   Word_Application.ActiveDocument.Save
  54.   Word_Documents.Close
  55.   Word_Application.Quit wdDoNotSaveChanges
  56.   Set Word_Application = Nothing
  57. Exit Sub
  58. remplacer:
  59. 'Devra créer le CustomDocumentProperties mais j'ai pas encore fait
  60. Word_Application.ActiveDocument.Saved = False
  61. Word_Application.ActiveDocument.Save
  62. Word_Documents.Close
  63. Word_Application.Quit wdDoNotSaveChanges
  64. End Sub


comme vous pouvez le constater, c'est vraiment très très très mal ce que j'ai fais. Et je vous raconte pas les performance de ce truc  :whistle:  
Merci pour votre future aide :jap:

n°516970
Poipoi
Vive Grumly
Posté le 18-09-2003 à 11:47:25  profilanswer
 

pas le temps aujourd'hui  :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°516984
drasche
Posté le 18-09-2003 à 11:58:09  profilanswer
 

bon alors, voilà comment je l'aurai écrit (plus ou moins):
 

Code :
  1. Private Sub cmdGenerer_Click()
  2.     Dim Word_Application As Word.Application
  3. [...]
  4.             Call CreateTree
  5.             Set Word_Application = New Word.Application
  6.             For i = 1 To intNbDoc - 1
  7.                 If lstDocuments.Selected(i - 1) = True Then
  8.                     strDocPath = txtEmplacement.Text & "/" & txtAbreviation.Text & "/" & aryInfo(i)(0) & "/" & aryInfo(i)(1) & "_" & txtAbreviation.Text & "_" & aryInfo(i)(6)
  9.                     Call FileCopy("a:/" & aryInfo(i)(5), strDocPath)
  10.                     Call Word_Application.Documents.Open(strDocPath)
  11.                     Call fSetProperties(Word_Application.ActiveDocument, i)
  12.                     Word_Application.ActiveDocument.Saved = False
  13.                     Word_Application.ActiveDocument.Save
  14.                     Call Word_Documents.Close ' manquerait pas un paramètre ici?
  15.                 End If
  16.             Next
  17.             Call Word_Application.Quit(wdDoNotSaveChanges)
  18.             Set Word_Application = Nothing
  19.             vTemp = MsgBox("RUP tree and artifacts has been created on your computer", vbOKOnly, "Warning" )
  20. [...]
  21. End Sub
  22. Public Sub fSetProperties(Word_Document As Word.Document, i As Integer)
  23.     Call fSetProperties(Word_Document, "PropertiesDocLanguage", fSetLanguage(cboLangue.Text), i)
  24.     Call fSetProperties(Word_Document, "PropertiesUnit", fSetLanguage(txtUnit.Text), i)
  25.     Call fSetProperties(Word_Document, "PropertiesProjectName", fSetLanguage(txtNom.Text), i)
  26.     Call fSetProperties(Word_Document, "PropertiesProjectAbbr", fSetLanguage(txtAbreviation.Text), i)
  27.     Call fSetProperties(Word_Document, "PropertiesProjectManager", fSetLanguage(txtProjectManager.Text), i)
  28.     Call fSetProperties(Word_Document, "PropertiesTransmitter", fSetLanguage(txtTransmitter.Text), i)
  29.     Call fSetProperties(Word_Document, "PropertiesReceiver", fSetLanguage(txtReceiver.Text), i)
  30.     Call fSetProperties(Word_Document, "PropertiesClassification", fSetLanguage(cboClassification.Text), i)
  31. End Sub
  32. Public Sub fSetProperty(Word_Document As Word.Document, vProperties As String, vText As String, i As Integer)
  33.     Word_Document.CustomDocumentProperties.Item(vProperties) = vText
  34.     Exit Sub
  35.  
  36. remplacer:
  37.     'Devra créer le CustomDocumentProperties mais j'ai pas encore fait
  38.     Call Word_Document.CustomDocumentProperties.Add(vProperties) ' je suppose la syntaxe, je n'ai pas l'aide ici
  39.     Resume ' réessaie l'affectation
  40. End Sub


 
Remarque que j'ai ajouté quelques Call, ça fait jamais de mal et tu courres moins de risques de bug.
J'ai déplacé Word_Application dans la fonction principale, de manière à ne l'ouvrir qu'une seule fois, de même que chaque document n'est ouvert qu'une seule fois.
 
L'assignation des propriétés customs se fait sur base du raisonnement suivant: si ça marche pas, c'est que l'item n'existe pas, donc je le crée puis je réessaie (on a un code semblable dans l'application mais avec une collection standard).
J'ai factorisé une longue expression qui se révèle être utilisée 2x de suite (strDocPath).
 
Tu devrais essayer d'abord avec Word visible, de manière à voir tout ce qui se passe (si tout se passe bien, on voit juste des documents s'ouvrir et se fermer). Comme ça tu peux voir si éventuellement Word te sort une boîte de dialogue pour des raisons xyz. Chez notre client, ils ont un message typique "normal.dot a été modifié, voulez vous le sauvegarder?". C'est pas bloquant mais chiant quand même (je sais pas s'il apparaît si on dit que Word n'est pas visible).
 
Essaie ça et dis moi si ça marche :)

n°517014
urd-sama
waste of space
Posté le 18-09-2003 à 12:35:13  profilanswer
 

superbe merci!
j'essaye ca en fin d'après-midi, je dois finir de l'intranet avant et je te redis.
en tout cas déjà un énorme merci!

n°517150
urd-sama
waste of space
Posté le 18-09-2003 à 14:33:31  profilanswer
 

alors voilà j'ai pris tout ca. j'ai déjà changé ta fonction setproperties pour qu'elle appelle setproperty à l'intérieur.
 
maintenant il me fait une erreur à cette ligne:
Call Word_Application.Documents.Open(strDocPath)
 
et à savoir "Object variable or with block variable not set"
 
je suis en train de chercher un peu ce que ca pourrait être (après avoir traqué l'erreur, car je ne peux tester mon prog qu'avec l'éxécutable  [:tinostar] )

n°517166
drasche
Posté le 18-09-2003 à 14:43:09  profilanswer
 

sur la méthode Open? [:wam]
 
oulah, je suggère au hasard, lecture des propriété Word_Application.Visible et Word_Application.Documents.Count, puis le contenu de strDocPath avant l'appel à Open pour voir si ça plante sur une de ces lignes.
 
Pourquoi tu peux tester qu'avec l'exécutable? :??:

n°517174
urd-sama
waste of space
Posté le 18-09-2003 à 14:47:53  profilanswer
 

je crois que c'est betement car j'avais pas créer mes objets (juste déclarer)
[:indiana jones]
 
j'ai des problèmes avec la bibiothèque word sur l'ordi de dev, qui est non officiel. et vu que j'ai pas le temps de regarder en détail pourquoi, et que ca fonctionne sur ma bécane principal (donc comme celle des autres), je fais avec  [:tinostar]

n°517188
drasche
Posté le 18-09-2003 à 14:58:01  profilanswer
 
n°517198
urd-sama
waste of space
Posté le 18-09-2003 à 15:05:48  profilanswer
 

je comprends pas trop l'utilité de "Resume" dans la gestion d'erreur.
en mettant la création du customproperties (chose à laquelle je vais m'atteler tantot), je dois préciser qu'il doit sortir après au lieu de recommencer c'est ca?
 
sinon chapeau, tout fonctionne nickel  [:darkmavis]  
vraiment merci beaucoup, j'aurais été trop dans la merde si j'arrivais pas à finir ca demain

n°517213
urd-sama
waste of space
Posté le 18-09-2003 à 15:17:54  profilanswer
 

et pour que l'application word soit invisible, c'est quelle propriété? j'avais essayé avec visibility = false mais ca marchait pas il me semble

n°517217
drasche
Posté le 18-09-2003 à 15:20:43  profilanswer
 

le Visible me semble être à False par défaut, donc si tu veux pas voir l'appli, tu n'as même pas besoin d'y toucher. Sinon tu mets à True et Word doit apparaître.
 
Pour le resume, cfr mon commentaire: ça reprend à la ligne qui a provoqué l'erreur. Donc j'essaie d'affecter ma valeur à la customproperty, si ça plante, gestion d'erreur -> j'ajoute la customproperty en question, et je fais un resume pour tenter à nouveau d'affecter la valeur: ça doit marcher au second coup.

n°517221
urd-sama
waste of space
Posté le 18-09-2003 à 15:25:02  profilanswer
 

oky doky :jap:
 
maintenant j'ai un autre problème, que j'avais déjà au départ. en fait pour créer la property j'ai pris ce modèle:
 
Application.ActiveWorkbook.CustomDocumentProperties.Add _
    Name:="TestCDP", _  
    LinkToContent:=False, _  
    Type:=msoPropertyTypeString, _  
    Value:="Hello World", _  
    LinkSource:=False
 
il me fait un problème pour le type. si je mets comme ca il veut pas compiler, et si je mets entre " il me met "type mismatch"

n°517227
drasche
Posté le 18-09-2003 à 15:29:11  profilanswer
 

que met-il comme message d'erreur à la compil?
 
edit: oui, si tu spécifies la valeur directement, un resume next ou rien du tout sera de meilleur aloi qu'un resume :)


Message édité par drasche le 18-09-2003 à 15:29:55
n°517229
urd-sama
waste of space
Posté le 18-09-2003 à 15:32:30  profilanswer
 

drasche a écrit :

que met-il comme message d'erreur à la compil?


variable not defined

n°517248
drasche
Posté le 18-09-2003 à 15:50:33  profilanswer
 

mmmh ça voudrait dire que msoPropertyTypeString n'est pas reconnu par le système. Ca me paraît bien bizarre ça vu que tu sais utiliser le reste :/
 
Dans l'exemple donné ici, je vois qu'ils ne font pas usage de LinkSource, essaie de compiler sans ça pour voir (et regarde le tooltip lorsque tu édites tes paramètres d'appel à Add pour voir si LinkSource en fait bien partie).

n°517249
Poipoi
Vive Grumly
Posté le 18-09-2003 à 15:52:04  profilanswer
 

sinon regarde ds les groupes google :)


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

drasche a écrit :

Dans l'exemple donné ici,


il fait violemment crashé mon ie  [:tinostar]

n°517254
drasche
Posté le 18-09-2003 à 15:57:12  profilanswer
 

c'est pourtant une page vers MSDN [:grinking]
 
Voilà le truc intéressant qu'il y avait à regarder sur la page :)
 

Citation :

This example adds a custom built-in property to Sales.doc.
 

Code :
  1. thename = InputBox("Please type your name", "Name" )
  2. Documents("Sales.doc" ).CustomDocumentProperties.Add _
  3.     Name:="YourName", LinkToContent:=False, Value:=thename, _
  4.     Type:=msoPropertyTypeString




Message édité par drasche le 18-09-2003 à 15:57:30
n°517259
Poipoi
Vive Grumly
Posté le 18-09-2003 à 15:59:41  profilanswer
 
n°517260
urd-sama
waste of space
Posté le 18-09-2003 à 15:59:45  profilanswer
 

il est toujours pas d'accord :/

n°517268
drasche
Posté le 18-09-2003 à 16:04:58  profilanswer
 

bon voyons, tu vas sur la méthode Add de la collection customproperties là, tu fais un Ctrl-I dessus pour avoir les infos et tu t'intéresses particulièrement au type de la valeur attendue pour le paramètre Type.

n°517281
urd-sama
waste of space
Posté le 18-09-2003 à 16:12:47  profilanswer
 

huhu
marche pas ctrl+i

n°517286
drasche
Posté le 18-09-2003 à 16:19:36  profilanswer
 

huhu, gros problème de compil :/  Il se peut que les combos apparaissant pour proposer propriétés/méthodes d'objets ne fonctionnent pas non plus.
 
met en commentaire ton Add de customproperty et fais un Ctrl-I sur autre chose. Il se peut que le problème de compil en question ne soit pas au niveau de cette ligne.

n°517288
urd-sama
waste of space
Posté le 18-09-2003 à 16:20:58  profilanswer
 

en fait sur le reste ca marche, par exemple sur le customproperties ca me mets "CustomDocumentProperties as Object" mais rien pour le reste

n°517297
drasche
Posté le 18-09-2003 à 16:31:14  profilanswer
 

aaaaaaah d'accord [:dawa]
 
et si dans l'object explorer (F2) tu fais une recherche sur "msoPropertyTypeString", tu trouves rien? Si c'est le cas, faudra trouver l'équivalent numérique :/

n°517301
urd-sama
waste of space
Posté le 18-09-2003 à 16:33:50  profilanswer
 

effectivement je trouve que dalle
et je fais comment pour trouver l'équivalent numérique?

n°517305
drasche
Posté le 18-09-2003 à 16:39:18  profilanswer
 

hmmmmm tu peux lancer Word, lancer ensuite l'environnement VBA (Alt-F11), taper ta constante et faire un Ctrl-I dessus qui te donnera la valeur.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5

Aller à :
Ajouter une réponse
 

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