Bonjour le forum
J'ai fouillé sur différents forums, sans trouver mon bonheur, par conséquent je me lance ici.
J'aurais le besoin suivant : j'ai des documents avec des extensions exotiques répartis dans de nombreux répertoires et je souhaiterais que chacun d'entre eux soit intégré dans un document word (Insertion\objet\créé à partir du fichier\affiché sous forme d’icone) et porterait le nom du fichier.
Exemple : j'ai les fichiers toto.xxxx, titi.yyyy et tutu.zzzz dans le répertoire MACHIN. Une fois que ma macro (qui se trouvera également dans le répertoire MACHIN) aura tourné, je vais trouver dans mon répertoire MACHIN un fichier toto.docx, un fichier titi.docx et un fichier tutu.docx.
Et si j'ouvre toto.docx, dans le document word, je retrouve toto.xxxx, si j'ouvre titi.docx, dans le document word, je trouve titi.yyyy etc....
Je me suis essayé voir le code ci-dessous, mais ce que je cherche c'est que la macro me traite tous les fichiers les uns après les autres dans le répertoire.
Toute aide sera la bienvenue.
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 Sub Encapsuler() Dim chemin As String chemin = ActiveDocument.Path 'la macro est exécutée dans le répertoire où se trouvent les fichiers à traiter MyName = Dir("*.*") intPos = InStrRev(MyName, ".") 'objectif retirer l'extension dans le nom plus bas While MyName <> "" 'boucle pour traiter tous les fichiers contenus dans le répertoire Documents.Add 'ouverture d'un fichier word With Selection 'c'est dans les 4 lignes plus bas ou je souhaite que la boucle soit variable au regard de chaque fichier traité et ...ou je coince. .InlineShapes.AddOLEObject ClassType:="AcroExch.Document.DC", _ FileName:=MyName, LinkToFile:=False, DisplayAsIcon:=True, IconFileName:= _ "C:\windows\Installer\{AC76BA86-7AD7-1036-7B44-AC0F074E4100}\PDFFile_8.ico" _ , IconIndex:=0, IconLabel:="Test.pdf" MyName = Left(MyName, intPos - 1) 'je ne retiens que la partie du nom que je veux accoler à la nouvelle extension ActiveDocument.SaveAs2 FileName:=chemin & "\" & MyName & ".docx" 'enregistré-sous au format docx dans le répertoire "Chemin" ActiveDocument.Close 'je referme le document actif une fois celui-ci enregistré End With MyName = Dir() Wend 'je boucle sur le fichier suivant MsgBox "fin du traitement"
J'ai de très nombreux fichiers à "encapsuler" dans des fichiers word répartis dans des dizaines de répertoires...merci pour votre bienveillance
Rénato
Partager