Bekijk de onderstaande video om te zien hoe je onze site als een web app op je startscherm installeert.
Opmerking: Deze functie is mogelijk niet beschikbaar in sommige browsers.
TS: Topic Starter
Ben benieuwd of je vooruit kunt met de code die ik er neergezet heb.
Komt-ie!. . . ben nu wel steeds nieuwsgieriger naar de code van OctaFish
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
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
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.
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 gebeurtIk begrijp deze materie namelijk nog niet zo goed.
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!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.
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:maar wat oDir.GetDetailsOf(sFile, i) is bijvoorbeeld: 25-07-2018 15:00 ?? Dan gaat dit niet werken want 'mm' kan geen 25 zijn.
If IsDate(oDir.GetDetailsOf(sFile, i)) Then
.Cells(i + ((j - 1) * 292) + 1, 4).Value = CDate(CDbl(oDir.GetDetailsOf(sFile, i)))
End If
Het vetgedrukte betekent dat je "H:\Mijn documenten\Test" moet aanpassen naar de schijf en map waar jouw foto's staan.Ik begrijp niet waarom dit er staat, het vetgedrukte:
Dim oDir: Set oDir = oShell.Namespace("H:\Mijn documenten\Test")
Omdat de schrijf en map "H:\Mijn documenten\Test" bij jou niet bestaan.Ik krijg bij uitvoering Fout 91 geen Object- of blokvariabele With ingesteld en bij foutopsporing
Gele balk bij > ReDim arr (oDir.Items.Count, 4)
We gebruiken essentiële cookies om deze site te laten werken, en optionele cookies om de ervaring te verbeteren.