• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

aantal csv files tellen in datumrange in een folder

Status
Niet open voor verdere reacties.

Peer44

Gebruiker
Lid geworden
25 jan 2008
Berichten
224
Hallo,

ik ben op zoek naar de VBA code om in een specifieke folder het aantal CSV files te tellen binnen een datumrange (weeknummer).
iedere dag wordt automatisch een CSV file opgeslagen met de datum van die dag. ik wil controleren of er ook wel daadwerkelijk een bestandje wordt aangemaakt.

nu wil ik per week tellen of het er 5 zijn (zaterdag en zondag niet)

voorbeeld:
2012-09-03.csv
2012-09-04.csv
2012-09-07.csv

als ik dit zou tellen in week 36 zouden het er maar 3 zijn.
 
Het lijkt me verstandiger te kijken naar de code die zo'n bestand moet aanmaken.
Hoe robuuster die is hoe overbodiger iedere controle daarop.


controle of er vandaag een bestand is aangemaakt in folder G:\OF\
Code:
sub snb()
 msgbox dir("G:\OF\" & format(date,"yyyy-mm-dd") & ".csv")
end sub

controle of er gisteren een bestand is aangemaakt
Code:
sub snb()
 msgbox dir("G:\OF\" & format(date-1,"yyyy-mm-dd") & ".csv")
end sub
 
Laatst bewerkt:
Daar ben ik het volledig mee eens.
helaas kan ik niet bij het bronbestand, dit is door de machinebouwer afgeschermd.

de code die je voorstelt werkt alleen misschien toch wat omslachtig.
omdat ik dit maar 1 keer per week wil checken.

is het mogelijk om een file lijst te krijgen van alle bestanden in een bepaalde folder?

dus in cel
a1 2012-09-03.csv (komt uit onderstaandvoorbeeld)
a2 2012-09-04.csv
a3 2012-09-07.csv
etc.

op deze manier kan ik in excel beoordelen of een bepaalde week volledig meegenomen kan worden of niet.
 
op dit idee verder gezocht "list file names form folder VBA"

kwam ik onderstaande code tegen, hier kan ik mee uit de voeten.
bedankt voor het meedenken!

Code:
Dim iRow

Sub ListFiles()
    iRow = 11
    Call ListMyFiles(Range("C7"), Range("C8"))
End Sub

Sub ListMyFiles(mySourcePath, IncludeSubfolders)
    Set MyObject = New Scripting.FileSystemObject
    Set mySource = MyObject.GetFolder(mySourcePath)
    On Error Resume Next
    For Each myFile In mySource.Files
        iCol = 2
        Cells(iRow, iCol).Value = myFile.Path
        iCol = iCol + 1
        Cells(iRow, iCol).Value = myFile.Name
        iCol = iCol + 1
        Cells(iRow, iCol).Value = myFile.Size
        iCol = iCol + 1
        Cells(iRow, iCol).Value = myFile.DateLastModified
        iRow = iRow + 1
    Next
    If IncludeSubfolders Then
        For Each mySubFolder In mySource.SubFolders
            Call ListMyFiles(mySubFolder.Path, True)
        Next
    End If
End Sub
 
Of deze, die alle files in de huidige week telt.
Code:
Sub Test()
    i = 0
    With CreateObject("scripting.filesystemobject").GetFolder(ThisWorkbook.Path)
        For Each fl In .Files
            If Right(fl.Name, 4) = ".csv" Then
                If IsoWeeksnb(DateValue(Left(fl, 10))) = IsoWeeksnb(Date) Then i = i + 1
            End If
        Next
    End With
    MsgBox i & " bestand(en) aangemaakt deze week"
End Sub
Function IsoWeeksnb(d1)
  IsoWeeksnb = Format(d1, "ww", 2) - IIf(Format("04-01-" & Year(d1), "ww", 2) = 2, 1, 0)
  If IsoWeeksnb = 0 Then IsoWeeksnb = 53
End Function
 
of
Code:
Sub snb()
    For j = 0 To Weekday(Date, 2) - 1
         c01 = c01 & vbLf & Format(Date - j, "dd-mm-yyyy") & ".csv" & vbTab & IIf(Dir("G:\OF\" & Format(Date - j, "dd-mm-yyyy") & ".csv") = "", "onbreekt", "")
    Next
    MsgBox c01, , "Ontbrekende bestanden"
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan