Bonjour,
Question 1 :
Je travaille actuellement sur une application qui doit ouvrir plusieurs fichiers office (Word mais je pense que cela importe peu) et qui complète des données à l'intérieur de ceux ci.
Je dois ouvrir en moyenne un dizaine de fichier Word dans mon traitement or mon temps de traitement de mes macros est inférieur à 1s par contre le temps d'ouverture / fermeture de mes fichiers peut prendre 1-3 minutes.
Actuellement mon code est le suivant :
Est ce que passer par des FSO augmente le temps de traitement des ouvertures/fermeture
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Dim WDApp As Word.Application Dim WDDoc As Word.Document Set WDApp = CreateObject("Word.Application") WDApp.Documents.Open("fichier") 'TRAITEMENT WDDoc.Close
Ou, est ce que le fait de garder WordApp ouvert me permettrait de gagner du temps?
Question 2 :
Je sais que ceci est possible, mais je me rends pas compte des implications qui seront générées à partir de ce code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Set WDDoc = Nothing Set WDApp = Nothing
Dois-je l'utiliser en // de WDdoc.close,WdApp.close si oui comment et à quoi cela vas il me servir?
Ou peut il remplacer WDdoc.close,WdApp.close avec une utilisation "seul" ou précédé de wdapp.save, wdapp.save
Voilà le code que j'ai :
Je met 1'26'' pour parcourir mes 16 fichiers
Voici mon code :
'Création de la structure du document word
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 timer1 = Time For i = 1 To k structure(i) = "Chemin d'accés" & listeClient(i) fichier = Dir(structure(i) & "\*.doc") Do While fichier <> "" j = j + 1 ouvertureFichier(j) = structure(i) & "\" & fichier Dim WDApp As Word.Application Dim WDDoc As Word.Document Set WDApp = CreateObject("Word.Application") WDApp.Documents.Open (ouvertureFichier(j)) WDApp.ActiveDocument.Bookmarks("signet1").Range.Text = "Petit test Dans tous les documents" WDApp.ActiveDocument.Save WDApp.ActiveDocument.Close WDApp.Quit Set WDApp = Nothing fichier = Dir Loop Next i timer2 = Time timer = timer2 - timer1 MsgBox timer
Partager