Doc en docx avec batch-macro

Forum Microsoft Office Word

Modérateur : Argitxu

Doc en docx avec batch-macro

Publicité
 

Avatar du membre
Petit Denis
VIP
VIP
Messages : 44
Enregistré le : 24 sept. 2010, 15:56

Doc en docx avec batch-macro

Message non lu par Petit Denis » 29 août 2018, 17:37

Bonjour,

Je cherche à convertir des documents word (2010) du format doc à docx (environ 4000).
Pour cela j'use de la batch-macro de la faqword et la macro trouvée sur internet (j'ai oublié le site où je l'ai trouvé, mais elle est signée M@rina !)

Code : Tout sélectionner

Sub conversion()
'
'Conversion Doc to docx (by M@rina)
'
Dim nom As String
nom = ActiveDocument.Name
With ActiveDocument
.Convert
.SaveAs2 FileName:=nom & "x", FileFormat:=wdFormatXMLDocument, CompatibilityMode:=14
.Close
End With
End Sub
J'ai l'erreur suivante :
erreur d'exécution 4248
Commande non disponible : aucun document n'est ouvert

Sur débogage, la ligne en erreur est : ActiveDocument.Close SaveChanges:=wdSaveChanges

Pourtant les 2 premiers fichiers sont convertis mais enregistrés pas au même endroit.
Ce qui pose aussi souci c'est le côté non récursif de la commande pour traiter la totalité des fichiers dans les dossiers et sous-dossiers...
ça coince où ???
Merci de vos lumières

Avatar du membre
m@rina
Administrateur
Administrateur
Messages : 1221
Enregistré le : 14 août 2009, 08:51
Contact :

Re: Doc en docx avec batch-macro

Message non lu par m@rina » 29 août 2018, 23:50

Hello Petit Denis ! ;)

Alors, en fait, ces deux macros fonctionnent mais il y a une petite incompatibilité entre les deux. Si tu regardes chacune d'elle, tu verras que toutes les deux enregistrent et ferment le fichier...
A l'origine l'idée était plutôt d'amener des corrections dans les fichiers et non pas d'en créer de nouveaux !

Donc, comme le but de la macro Conversion est de faire un Enregistrement sous un nouveau nom (elle n'efface pas l'ancien fichier), il faut que tu supprimes la ligne

Code : Tout sélectionner

ActiveDocument.Close SaveChanges:=wdSaveChanges
dans la batchmacro

et tu ne devrais plus avoir cette erreur.

Vérifie également le CompatibilityMode:=14 dans la macro Conversion. Essaie de mettre 15 qui est actuellement le format par défaut (mais effectivement cela dépend des versions).
m@rina

Avatar du membre
Petit Denis
VIP
VIP
Messages : 44
Enregistré le : 24 sept. 2010, 15:56

Re: Doc en docx avec batch-macro

Message non lu par Petit Denis » 30 août 2018, 09:00

Coucou
et merci !
effectivement ça fonctionne nettement mieux.
Ça enregistre pas dans le répertoire courant mais je pense qu'avec curdir$ ça devrait le faire.
Pour la récursivité, là, c'est sans doute plus complexe à faire.

Avatar du membre
m@rina
Administrateur
Administrateur
Messages : 1221
Enregistré le : 14 août 2009, 08:51
Contact :

Re: Doc en docx avec batch-macro

Message non lu par m@rina » 01 sept. 2018, 04:49

Hello Petit Denis,

Pour la récursivité, c'est compliqué avec Word. Par contre si tu acceptes que tous les fichiers convertis se retrouvent dans un même dossier, c'est tout bête :
quand la boîte de dialogue te demander quels fichiers convertir, tu tapes *.doc dans la zone de recherche, et la recherche Windows va t'afficher tous les fichiers doc. Il te suffit alors de tous les sélectionner.

Quant au dossier où l'on souhaite les enregistrer, il suffit d'ajouter nom du dossier avant le nom du fichier pour la ligne de sauvegarde :

Code : Tout sélectionner

.SaveAs2 FileName:="C:\Users\toto\Documents\dossierzz\" & Nom & "x", FileFormat:=wdFormatXMLDocument, CompatibilityMode:=15
m@rina

Avatar du membre
m@rina
Administrateur
Administrateur
Messages : 1221
Enregistré le : 14 août 2009, 08:51
Contact :

Re: Doc en docx avec batch-macro

Message non lu par m@rina » 02 sept. 2018, 01:46

Hello Petit Denis

Je viens d'avoir l'illumination de la récursivité !
Elle m'est venue suite à l'idée de mettre le chemin dans le nom.

Donc, dans la macro Conversion, il suffit de remplacer Name par FullName :

Code : Tout sélectionner

Nom = ActiveDocument.FullName
Ainsi tu fais comme je t'ai dit pour la sélection de tous les doc en partant du dossier principal et, le nom (FullName) contenant le chemin d'origine, l'enregistrement se fera avec ce chemin.

Une fois le traitement terminé, tu auras tous tes fichiers en double, une version doc et une version docx.
Tu peux ensuite faire une copie du dossier principal, faire une recherche sur les doc et tu les supprimes tous. Ainsi tu auras un dossier avec les doc et un autre avec les docx.
A titre d'info, pour faire une recherche sur doc et non docx, tu peux taper : *.doc - *.docx
m@rina

Répondre