26. februar 2009 - 20:54Der er
6 kommentarer og 1 løsning
Udtræk af file properties som subject, status, artists på vilkårlige filer
Sidder og pusler lidt med at få strikket en VBA kode sammen i excel der er i stand til at trække fil properties (fx subject) ud på vilkårlig filtyper i en mappe. Jeg har imidlertid ikke været i stand til at løse dette problem er der nogle der ligger inde med gode indput?
Og i samme omgang er det også interessant om det er muligt at skrive/ændre subject på den pågældende fil bagefter udtrækket er foretaget?
Vha. information i artiklen og links deri kan du installere en fil, dsofile.dll, og skrive VBA-kode, som gør det muligt at redigere document properties i Office-dokumenter uden at åbne filerne. Hvis "vilkårlige filtyper" omfatter ikke-Office-filer, er det jo ikke tilstrækkeligt.
Artiklen omtaler Word. Jeg har selv udelukkende prøvet at benytte dsofile.dll fra VBA i Word. Men fremgangsmåden skulle være den samme i de forskellige Office-programmer.
Den her funktion viser detaljer for en given fil i en given folder:
Function ShowProperties(sFileName, sFolderPathspec) Dim objShell, objFolder, objParsename, i, s, arr arr = Array("0 Name ", "1 Size ", "2 Type ", "3 Date Modified ", "4 Date Created ", "5 Date Accessed ", "6 Attributes ", "7 Status ", "8 Owner ", "9 Author ", _ "10 Title ", "11 Subject ", "12 Category ", "13 Pages ", "14 Comments ", "15 Copyright ", "16 Artist ", "17 Album Title ", "18 Year ", "19 Track Number ", _ "20 Genre ", "21 Duration ", "22 Bit Rate ", "23 Protected ", "24 Camera Model ", "25 Date Picture Taken", "26 Dimensions ", "27 ", "28 ", "29 Episode Name ", _ "30 Program Description", "31 ", "32 Audio sample size ", "33 Audio sample rate ", "34 Channels ", "35 Company ", "36 Description ", "37 File Version ", "38 Product Name ", "39 Product Version ", "40 Keywords ")
Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.Namespace(sFolderPathspec)
Set objParsename = objFolder.Parsename(sFileName) s = "" For i = 0 To 40 s = s & arr(i) & ": " & vbTab & objFolder.GetDetailsOf(objFolder.Parsename(sFileName), i) & vbNewLine Next
Jeg ser nu, at du allerede fra arne_v havde fået et andet link om dsofile.dll. Det nye layout af eksperten.dk snyder mig sommetider, så jeg overser et svar, når det er kort...
Super jeg har brug for lige nøjagtig det tjp skriver da det handler om vilkårlige filer og ikke kun office dokumenter som dsofile.dll refererer til så vidt jeg ved.
Sagen er måske dog lidt mere kompleks end som så. For så vidt jeg ved så sker der det at så snart at jeg har brugt tjp´s kode så har jeg lagt informationerne ind i et array og dermed har jeg kun mulighed for at læse data og ikke ændre dem. Så jeg har stadig brug for at vide hvordan kan jeg i så fald benytte tjp's kode til at trække de info ud jeg har brugt fx. i et excel ark. For derefter at ændre dem og efterfølgende sende/skrive ændringerne til de pågældende filer?
Hmm er der virkelig ingen der har lyst til at byde ind på andet spørgsmål. Hvis der ikke er det må jeg heller tildele tjp point for det er løsningen på mit første spørgsmål
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.