Bonjour à tous,
Je fais l'extraction de pièces jointes (ensemble de fichiers excel) à partir de fichiers ".msg" et je voudrais savoir s'il y'a un moyen de parcourir ces fichiers excel (212 fichiers) et d'ajouter un champ dans la première feuille à la fin de chaque ligne non vide et dans lequel on retrouve le nom du fichier.
J'ai essayé sur un seul fichier ça a marché ! mais le soucis que j'arrive pas à le faire avec une liste de fichiers
et au même temps je veux récupérer juste la première feuille de chaque classeur donc j'essaye de supprimer les autres feuilles mais ça me renvoie un message d'erreur "L'indice n'appartient pas à la sélection!"
Pourriez vous m'orienter svp ?
J'utilise le code suivant qu'on m'a passé dans ce forum avec de petites commandes que j'ai ajouté :
Merci d'avance !
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
24
25
26
27
28
29
30
31
32
33 Sub SaveMSG() Dim objOL As Object Dim objItem As Object Dim Attach As Object, NomFichier As String Dim CheminMSG As String, CheminDest As String Dim Fichier As Variant CheminMSG = "Mon répertoire" If Right(CheminMSG, 1) <> "\" Then CheminMSG = CheminMSG & "\" CheminDest = "Ma destination" If Right(CheminDest, 1) <> "\" Then CheminDest = CheminDest & "\" Set objOL = CreateObject("Outlook.Application") Fichier = Dir(CheminMSG, vbArchive) Do While LCase(Right(Fichier, 3)) = "msg" 'vérifie que ce sont bien des .MSG Set objItem = objOL.CreateItemFromTemplate(CheminMSG & Fichier) For Each Attach In objItem.Attachments 'lecture de tous les fichiers joints NomFichier = Attach.Filename 'Copie les fichiers Excel seulement If InStr(1, NomFichier, ".xls") > 0 Then Attach.SaveAsFile CheminDest & NomFichier Sheets(1).Range("N1").Value = ActiveWorkbook.Name Sheets(2).Delete Sheets(3).Delete Next Fichier = Dir Loop Set objItem = Nothing Set objOL = Nothing End Sub
Partager