Bonjour,
Voici mon besoin : j'ai numérisé un grand nombre de diapos et je voudrais pour chacune d'entre elles mettre à jour la date de prise, le lieu, le commentaire, le titre, etc...
Ces informations sont modifiables dans l'explorateur windows7, mais d'une part la mise à jour manuelle est fastidieuse et d'autre part j'ai déjà une feuille excel qui contient la liste de ces fichiers JPG avec pour chacun d'entre eux l'ensemble des informations que je souhaite mettre à jour.
J'ai donc voulu automatiser le processus.
La lecture de différents posts et articles sur ce site (et sur d'autre) m'a permis de comprendre comment lire les propriétés étendues de ces fichiers avec un Getdetailsof.
Malheureusement il n'y a pas de Setdetailsof. J'ai donc essayé les solutions suivantes :
- utilisation de la DLL CDDBControl avec la fonction ID3tag, mais il semblerait que cela ne s'applique qu'au fichier MP3, car après mise à jour des propriétés étendues le fichier JPG devient illisible
- J'ai essayé d'utiliser les fonctions de WindowsMediaPlayer (Wmp.currentMedia.setItemInfo "Title", mytitle) mais je n'ai pas réussi à faire fonctionner le code (erruer lors de l'exécution)
- Enfin l'utilisation de la DLL DSOfile semblait répondre exactement à mon besoin.
Le code fonctionne bien, lorsque je vérifie avec DSOFile les propriétés ont été mises à jour, mais lorsque je vais dans l'explorateur Windows7 aucune de mes mises à jour n'est visible.
Je suis donc assez perplexe. Tout se passe comme si les fichiers avaient 2 jeux de propriétés étendues. Mes recherches semblent confirmer cette hypothèse : il y aurait des propriétés de types "ADS" quie ont été remplacées par de nouvelles propriétés étendues car elles présentaient des problèmes de sécurité.
Toutefois je ne suis pas sûr que cette explication soit valide.
Voici le code que j'utilise pour mettre à jour les propriétés étendues
Pouvez-me dire
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 Sub WRITE_TO_EXPLORER() Dim mydate As Date Dim mytitle As String Dim mycomment As String Dim MyArtist As String Application.Calculation = xlCalculationManual Set ws = Sheets("A écrire") ws.Activate ' 'Nécessite d'activer la référence DSO OleDocument Properties Reader 2.0 ' 'http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q224351 ' Set DSO = New DSOFile.OleDocumentProperties Set DSO = CreateObject("DSOFile.OleDocumentProperties") '----------------------------------------------------------------------------------------------------- '- CHECK NUMBER OF FILES TO CHANGE (VISIBLE ROWS) LastRow = ws.Range("A65536").End(xlUp).Row ' count worksheet rows FilesToChange = ws.Range("A2:A" & LastRow).SpecialCells(xlCellTypeVisible).Count If FilesToChange = 0 Then MsgBox ("No files to change."): Exit Sub FilesChanged = 0 '----------------------------------------------------------------------------------------------------- '- LOOP WORKSHEET FILES - VISIBLE ROWS ONLY For FromRow = 2 To LastRow If ws.Cells(FromRow, "A").EntireRow.Hidden = False Then '--------------------------------------------------------------------------------------------- '- Get file properties from sheet With ws MyFilePathName = .Cells(FromRow, "J").Value MyArtist = .Cells(FromRow, "E").Value mycomment = .Cells(FromRow, "G").Value mytitle = .Cells(FromRow, "F").Value mydate = .Cells(FromRow, "C").Value End With '--------------------------------------------------------------------------------------------- '- Write to file ' 'Attention: Le fichier doit être préalablement fermé! DSO.Open (MyFilePathName) DSO.SummaryProperties.Comments = mycomment DSO.SummaryProperties.Title = mytitle DSO.SummaryProperties.Author = MyArtist ' DSO.SummaryProperties.DateCreated = mydate DSO.Save DSO.Close '--------------------------------------------------------------------------------------------- FilesChanged = FilesChanged + 1 End If Next '----------------------------------------------------------------------------------------------------- '- end of program Application.Calculation = xlCalculationAutomatic End Sub
- si j'ai loupé quelque chose dans la mise à jour des propriétés étendues ?
- est-ce que mon hypothèse sur les 2 jeux de propriétés étendues est correcte
- Surtout quel est le moyen pour mettre à jour les propriétés étendues qui sont visibles dans l'explorateur Windows 7
Merci de votre aide
GA
Partager