Overzicht maken 'Genomen op'

Status
Niet open voor verdere reacties.
TS: Topic Starter

Ben benieuwd of je vooruit kunt met de code die ik er neergezet heb.
 
TS: Topic Starter

Ben benieuwd of je vooruit kunt met de code die ik er neergezet heb.

Of die van mij uit bericht#18, ik heb deze voor iemand anders gemaakt in 2014 en vervolgens nooit meer een reactie gehad :(
 
Een antwoord geven lijkt me toch echt normaal, maar ja... het schijnt soms wel een anders te gaan, lees ik ook bij jou....
Maar tot nu toe heeft deze TS steeds geantwoord, dus ik ga van het positieve uit...:thumb:
 
. . . ben nu wel steeds nieuwsgieriger naar de code van OctaFish
Komt-ie!
Code:
Sub LeesMap()
Dim sFile As Variant, sFile1 As Variant, sFile2 As Variant

Dim oShell: Set oShell = CreateObject("Shell.Application")
Dim oDir:   Set oDir = oShell.Namespace("H:\Mijn documenten\Test")
Dim i As Integer, j As Integer
Dim arr() As Variant
Dim sht As Worksheet
Dim wb As Workbook

Set wb = ActiveWorkbook
    ReDim arr(oDir.Items.Count, 4)
    Set sht = wb.ActiveSheet
    With sht
        .Cells(1, 1).Value = "Bestandsnaam:"
        .Cells(1, 2).Value = "Eigenschap:"
        .Cells(1, 3).Value = "Index:"
        .Cells(1, 4).Value = "Waarde:"
        For Each sFile In oDir.Items
            j = j + 1
            For i = 1 To 292
''                arr(j, 1) = sFile.Name
''                arr(j, 2) = oDir.GetDetailsOf(Null, i)
''                arr(j, 3) = i
''                arr(j, 4) = oDir.GetDetailsOf(sFile, i)
                .Cells(i + ((j - 1) * 292) + 1, 1).Value = sFile.Name
                .Cells(i + ((j - 1) * 292) + 1, 2).Value = oDir.GetDetailsOf(Null, i)
                .Cells(i + ((j - 1) * 292) + 1, 3).Value = i
                .Cells(i + ((j - 1) * 292) + 1, 4).Value = oDir.GetDetailsOf(sFile, i)
            Next i
        Next sFile
    End With
    MsgBox "Klaar!"
End Sub
 
@Route99: Ik heb de Powershell nog niet gebruikt, ik moet eerst gebruik van PS openzetten. (Ben verdergegaan met de Excel)
Mijn dank voor het tippen van de code.

@alphamax: Code in Excel werk prima! De GPS-info heb ik verwijderd want die gebruik ik niet. Deze code geeft idd de 'Genomen op' data

@OctaFish: Ik ga je code zo testen. Ziet er ook weer compact uit. :)


Iedereen weer hartelijk bedankt voor de bijdrages! Ik ga de namen van de foto's renamen met als tag de 'genomen op' datum.
Hierna sorteren op naam en dan kan Photo Viewer als met naam op juiste volgorde tonen. :)
 
@OctaFish: De code geeft idd alle info die ik zou willen hebben. Zal bij het ophalen een filter gaan gebruiken zodat alleen de gewenste info gebruikt wordt.

Wordt nu kijken welke code ik ga gebruiken.
Ben geheel content!
 
@OctaFish: Ik heb de waardes van: Dim i As Integer, j As Integer aangepast. Lopen uit hun gebied.
=> Dim i As Long, j As Long
 
@HansFRAP
Zou jij eens twee screenshots willen plaatsen van een uitvoer van deze code? Ik begrijp deze materie namelijk nog niet zo goed.
 
@Octafish.
Na uitvoer van je code loop ik tegen een datum format probleem op :-(

Beschrijving
Index: 3,4,5 en 12 geven een datum terug. Ik weet dat alle foto's genomen zijn in juni en juli. Bewerking heeft eind juli plaats gevonden.
Dus alle datums ( Gewijzigd op; Aanmaakdatum; Laatst geopend op en Genomen op) hebben plaatsgevonden in juni, juli of augustus.
In de tabel verschijnen echter datums van september !

Na controle, via venster direct, blijkt dat een waarde van i = 4: Aanmaakdatum - 9-7-2018 15:10 is (correct).
Ook de debug waarde in de code levert bij extra variabele check: 9-7-2018 15:10 op.
In de cel wordt echter: 7-9-2018 15:10 (met aangepaste opmaak: Aangepast ipv Standaard (wat het was) )
Dit probleem doet zich ook voor bij i = 5 (Laatst geopend op)

Bij de datums met i = 3 of i =12 wordt de datum in correct format neergezet.

Mogelijke 'oplossing' voor de datums bij i = 4 of 5:
Code:
                If IsDate(oDir.GetDetailsOf(sFile, i)) Then
                    If i = 4 Or i = 5 Then
                        .Cells(i + ((j - 1) * 292) + 1, 4).Value = Format(oDir.GetDetailsOf(sFile, i), "mm-dd-yyyy  hh:mm")
                    ElseIf i = 3 Or i = 12 Then
                        .Cells(i + ((j - 1) * 292) + 1, 4).Value = Format(oDir.GetDetailsOf(sFile, i), "dd-mm-yyyy  hh:mm")
                    End If
                Else
                    .Cells(i + ((j - 1) * 292) + 1, 4).Value = oDir.GetDetailsOf(sFile, i)
                End If
maar wat als i = 4 of 5 en oDir.GetDetailsOf(sFile, i) is bijvoorbeeld: 25-07-2018 15:00 ?? Dan gaat dit niet werken want 'mm' kan geen 25 zijn.

Vraag
Hoe kan ik dit nu wel goed oplossen?
Scherm-Code-Direct.jpg
 
Laatst bewerkt:
@Senso. Welke schermen zou je willen zien?
- Code van OctaFish of van de de code met GPS?
 
Als ik het goed begrijp worden door de macro de details zoals deze weergegeven worden in Windows verkenner in kolommen gezet in Excel. Dat wil ik dan wel eens zien en kan interessant zijn als dit 100% werkt. En het aantal details kunnen er veel zijn o.a. Adres van afzender, Verzonden op, Aan, Opmerkingen, Koppelingsdoel etc. etc.

Dat is de code van OctaFish.

OctaFish schreef:
Je kunt zo’n 293 verschillende attributen uit een bestand lezen, als ik me niet vergis. Ik heb daar een routine voor gemaakt die ze uitleest, maar daar kan ik nu even niet bij. In verkenner kun je verschillende kolommen zien, afhankelijk van wat je in de map wilt laten zien. In een fotomap zie je andere kolommen dan in een muziekmap. Dat kun je per maptype instellen overigens.
 
Laatst bewerkt:
Ik begrijp deze materie namelijk nog niet zo goed.
Voer de macro uit in Excel op een map met niet teveel bestanden (hij loopt namelijk hard door, zie de ervaring met de variabelen van Hans) en kijk wat er gebeurt :)
 
Jij weet net zo goed als ik, dat ik totaal niets begrijp van de inhoud van een dergelijke code. Punt is dat die implementatie van die macro al een hele toer is. Ik begrijp niets van al die toestanden die daar te zien zijn. Als ik nog jong was en geen hersenschade had, dan was er nog hoop, maar mijn huisarts heeft ook vastgesteld dat ik niet zo slim was. Ik vraag mij dus nu af, heeft het überhaupt zin om met dergelijke ingewikkelde materie aan de slag te gaan en dan zou ik dat doen, niet op mijn hoofd-pc maar op mijn oude pc waar XP op draait. Vandaar de vraag om een voorbeeld van de uitvoer/screenshots.
 
Laatst bewerkt:
@Senso
Zie de bijlage. Is een afdruk van de eerste 32 rijen. Na 292 rijen (of als je de maximale waarde ingeeft dan: 321) krijg je de info van het volgende bestand.
Afhankelijk van het bestands-type krijg je waardes in de kolom Waardes.

Scherm Presentatie.JPG
 
Punt is dat die implementatie van die macro al een hele toer is. Ik begrijp niets van al die toestanden die daar te zien zijn.
En dat hoeft ook niet; het is een complete, werkende macro. Je hoeft niet meer te doen dan de code te kopiëren, in een (nieuwe of oude) moduel te plakken (VBA editor openen met <Alt>+<F11>, dan <Invoegen>, <Module>) en daar de code te plakken. Vervolgens druk je op de knop <Uitvoeren> (of <F5>) en de rest gaat vanzelf. Dus je hoeft verder niet na te denken, alleen een map aan te wijzen met de bestanden die je in wilt lezen. Dat kiezen gebeurt al in de macro. Probeer het maar uit!
 
maar wat oDir.GetDetailsOf(sFile, i) is bijvoorbeeld: 25-07-2018 15:00 ?? Dan gaat dit niet werken want 'mm' kan geen 25 zijn.
Het probleem wordt veroorzaakt doordat de code met de Amerikaanse datumnotatie werkt, en wij met de Europese. Dat betekent dat het eerste getal als maand wordt gezien. Dus 6-9-2018 wordt dan 9-6-2018. Dat probleem speelt niet als de 'maand' groter is dan 12, want er zijn maar 12 maanden dus dan gaat de Amerikaanse notatie ineens wél over op de Europese. Ik los dat meestal op door de datum eerst te vertalen naar een getal, en dat vervolgens terug te halen naar een datum. Je krijgt dan dit:
Code:
                If IsDate(oDir.GetDetailsOf(sFile, i)) Then
                    .Cells(i + ((j - 1) * 292) + 1, 4).Value = CDate(CDbl(oDir.GetDetailsOf(sFile, i)))
                End If
Volgens mij moet je die code op alle datums loslaten, en niet op een paar zoals jij nu doet.
 
Volgens de screenshot is het heel wat anders dan ik had verwacht. Ik dacht aan een folder/file/directorylist met de details in kolommen. Is natuurlijk heel goed als je een compleet overzicht wilt hebben van één file en dit wilt vastleggen.

Ik begrijp niet waarom dit er staat, het vetgedrukte:
Dim oDir: Set oDir = oShell.Namespace("H:\Mijn documenten\Test")

Ik krijg bij uitvoering Fout 91 geen Object- of blokvariabele With ingesteld en bij foutopsporing
Gele balk bij > ReDim arr (oDir.Items.Count, 4)
 
Ik begrijp niet waarom dit er staat, het vetgedrukte:
Dim oDir: Set oDir = oShell.Namespace("H:\Mijn documenten\Test")
Het vetgedrukte betekent dat je "H:\Mijn documenten\Test" moet aanpassen naar de schijf en map waar jouw foto's staan.
Uiteraard zonder \ op het einde, want dan krijg weer een andere foutmelding.
Ik krijg bij uitvoering Fout 91 geen Object- of blokvariabele With ingesteld en bij foutopsporing
Gele balk bij > ReDim arr (oDir.Items.Count, 4)
Omdat de schrijf en map "H:\Mijn documenten\Test" bij jou niet bestaan.
Kan er ook niets in oDir komen.
Als er niets in zit kan je ook niets tellen/counten, oDir.Items.Count
 
Bedankt voor de uitgebreide uitleg.
Dus dat komt er dan op neer dat je telkens de macro moet aanpassen en de locatie/adres moet opgeven waar de foto's staan. Foto's staan bij mij wel op duizend verschillende locaties. Dan lijkt me dit onwerkbaar. Ik dacht, het is nog wel te doen als de Excel-file in de betreffende map staat en dan uitvoeren. Maar zo werkt het dus niet. Ga het nog eens proberen.

Edit:
Nog eens getest en werkt mooi. Alleen de datums hebben een verkeerde weergave. Het is: 01/08/2007
en ik zie 2007:08:01
en 08/01/07 15:57
gemaakt op 22/08/18 18:20

Als je dat goed wilt hebben dan zouden alle datums het format moeten hebben van 22/08/2018 18:20 en niet anders en niet 22/08/18 want dat kan in een print ook 1918 zijn. Dat kan HansFRAP dan uitwerken. Als dat klaar is krijgen we dan een volledig nieuwe werkende macro/code?

Dit is wel iets voor als je een bestand goed wilt specificeren. Ik weet nog niet exact welke details allemaal zichtbaar worden, want ik heb het getest in WXP. In W7 zal ik het ook eens uitvoeren op die manier zoals in post 36 staat. Maar nu en morgen zit ik even krap in de tijd.

Edit:
In Windows 7 werkt het prima op de datums na. Ik zie wel mogelijkheden voor gebruik.
Dit is een handig hulpmiddel om details van foto's en documenten van te leggen.

Edit: 23/08/2018
Uitgebreid getest en de details en het aantal zijn prima. Met filters kun je een hoop bereiken. Maar categorieën/groepen is wat anders. Kan ook met filters. Ik heb nu twee bestanden één voor foto's en één voor video's. Ik zie helaas een vervolg niet zitten. Te arbeidsintensief voor grote aantallen files.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan