Appeler les documents word
Bonjour à tous,
J'ai fait (avec l'aide de la communauté) un petit code pour ouvrir tous les docs word d'un dossier.
[/Dim k As Object
Set k = CreateObject("Word.Application")
k.Visible = True
fichier = Dir("C:\Users\Francois\Desktop\essai importation\Macro\*.doc") 'on defini le chemin d'accès des fichiers cibles et on le nomme "fichier"
Do While fichier <> "" 'la macro tourne tant qu'il reste des fichiers excel dans le dossier
k.Documents.Open ("C:\Users\Francois\Desktop\essai importation\Macro\" & fichier) 'ouverture de la premiere cible
Qui fonctionne bien.
Maintenant je veux ouvrir en parallèle un autre fichier word fixe. ce qui donne ceci
Sub remplacement()
Dim k As Object
Dim template As Object
Dim SOP As Object
Set k = CreateObject("Word.Application")
k.Visible = True
fichier = Dir("C:\Users\_pillef\Desktop\SOP\Critique\*.doc") 'on defini le chemin d'accès des fichiers cibles et on le nomme "fichier"
Do While fichier <> "" 'la macro tourne tant qu'il reste des fichiers excel dans le dossier
Set SOP = k.documents.Open("C:\Users\_pillef\Desktop\SOP\Critique\" & fichier) 'ouverture de la premiere cible que l'on appelle "SOP" dans la macro
Set template = k.documents.Open("C:\Users\_pillef\Desktop\SOP\template.docx") 'ouverture du fichier fixe "template" qui garde le même nom dans la macro. Ne fonctionne pas, excel plante à ce moment là
SOP.tables(2).cell(1, 4).Range.Copy ' je copie une case d'un tableau dans "SOP"
template.Bookmarks.Item("Owning_group").Range.PasteAndFormat wdFormatPlainText 'et je le colle dans "template" sur le signet "owning_group"
template.SaveAs Filename:="C:\Users\_pillef\Desktop\SOP\Critique\Template changé\" & SOP.Name ' Save as du fichier fixe dans un autre repertoire pour pouvoir le réutiliser
template.Close 'close the current source file
fichier = Dir 'go to next file in the directory
Loop 'restart the process with next file
Word.Application.Quit
Set WrdApp = Nothing
End Sub
Je ne comprends pas pourquoi tout plante quand j'essaye d'ouvrir le deuxième document word
Merci de vos lumières.
PS: j'aimerais aussi savoir comment changer le titre de mes paragraphes si quelqu'un connaît la commande
Bonjour,
juste une erreur de logique : le fichier fixe doit être ouvert une seule fois et donc avant la boucle !
Non, ca ne va pas marcher, désolé.
A chaque fois que j'ouvre un fichier "SOP" je dois ouvrir le fichier "template" le remplir avec des copier coller de "SOP" et l'enregistrer ailleurs sous un autre nom pour pouvoir le fermer et le rappeler non modifié pour le prochain "SOP"
Je fais cette macro pour réaliser un changement de template de 150 docs.
Dans ce cas, tout dépend précisément de " tout plante " forcément d'une clarté limpide menant vers la solution …
Par "tout plante", je veux dire que le débogeur ne fonctionne plus (plus de surlignage de ligne), je ne peux plus rien faire sur excel ou VBA. Obligé de passer par le gestionnaire de taches pour le fermer.
Et quand je ferme word il me sort une boite de dialogue pour me proposer d'ouvrir mon document template en read-only car l'édition est verrouillée par moi-même. :s
J'ai trouvé.
J'ai relancé mon ordi et amélioré la syntaxe qui n'était pas assez précise
Sub remplacement()
Dim wordapp As Object
Dim template As Object
Dim SOP As Object
Set wordapp = CreateObject("Word.Application")
wordapp.Visible = True
fichier = Dir("C:\Users\_pillef\Desktop\SOP\transfert\*.doc") 'on defini le chemin d'accès des fichiers cibles et on le nomme "fichier"
Do While fichier <> "" 'la macro tourne tant qu'il reste des fichiers excel dans le dossier
Set SOP = wordapp.Documents.Open("C:\Users\_pillef\Desktop\SOP\transfert\" & fichier) 'ouverture de la premiere cible
Set template = wordapp.Documents.Open("C:\Users\_pillef\Desktop\SOP\template.docx")
SOP.tables(2).cell(1, 4).Range.Copy
template.Bookmarks.Item("Owning_group").Range.PasteAndFormat wdFormatPlainText
template.SaveAs Filename:="C:\Users\_pillef\Desktop\SOP\transfert\Template changé\" & SOP.Name
template.Close 'close the current source file
SOP.Close
fichier = Dir 'go to next file in the directory
Loop 'restart the process with next file
Word.Application.Quit
Set WrdApp = Nothing
End Sub
Nouveau problème, je voudrais copier un document word de la page 3 à la dernière. Comment faire svp?
Ma difficulté, c'est juste la selection des pages.