gesorteerde lijst met exclebestanden uit een bepaalde map.

Status
Niet open voor verdere reacties.

VenA

Inventaris
Lid geworden
2 mrt 2013
Berichten
17.103
Wat moet ik in de code aanpassen om alleen de Excelbestanden in de map "E:\Temp" gesorteerd op datum in een array te krijgen? (het laatste bestand eerst)

Code:
Sub VenA()  Dim c00 As String, ar1
  c00 = "E:\temp\" 'standaard pad
  ChDir c00 'naar het juiste pad
  ar1 = Split(CreateObject("WScript.Shell").Exec("cmd /c dir /b/o-d/s *.xls*").StdOut.ReadAll, vbCr) 'gesorteerde lijst met bestanden.
End Sub

Werkt niet. Ik krijg de data uit C:\User\....... met de onderliggende mappen.
 
Dit:
Code:
Sub VenA()
  Dim c00 As String, ar1
  c00 = "E:\temp\"          [COLOR="#008000"]'standaard pad[/COLOR]
  [COLOR="#FF0000"]ChDrive (Left(c00, 2))[/COLOR]    [COLOR="#008000"]'Naar juiste drive[/COLOR]
  ChDir c00                 [COLOR="#008000"]'naar het juiste pad[/COLOR]
  ar1 = Split(CreateObject("WScript.Shell").Exec("cmd /c dir /b/o-d/s *.xls*").StdOut.ReadAll, [COLOR="#FF0000"]vbCrLf[/COLOR]) [COLOR="#008000"]'gesorteerde lijst met bestanden.[/COLOR]
End Sub
 
Laatst bewerkt:
De '/s' pakt de bestanden uit de onderliggende mappen mee.
Code:
Sub hsv()
  arr = Split(CreateObject("wscript.shell").exec("cmd /c Dir ""E:\Temp\*.xls""/o-d/b").stdout.readall, vbCrLf) 
  Cells(1).Resize(UBound(arr)) = Application.Transpose(arr)
End Sub

Code:
"/o-d/b/" op datum, nieuw naar oud.
"/b/o:d"  op datum, oud naar nieuw.
"/o:n/b"  alfabetische volgorde.
"/b/o-n"  van Z-A gesorteerd.
 
@Vena, wil je de door jou gebruikte methode delen?
 
Tuurlijk. Is een onderdeeltje van een best complex geheel met verschillende downloads en het geheel samenvoegen en weer splitsen naar printlijsten. In het kader van het 'monkeyproof' maken wil ik de laatste bestanden hebben die aan bepaalde voorwaarden voldoen.
De code in het echte bestand is iets anders maar voor het idee.
Code:
Sub temp()
  c00 = "E:\Temp\"
  ar4 = Split(CreateObject("WScript.Shell").Exec("cmd /c dir /b/o-d " & c00 & "*.xls*").StdOut.ReadAll, vbCrLf)
  ar5 = Sheets("instellingen").ListObjects(1).DataBodyRange
    For j = 0 To UBound(ar4)
      If Not b1 Then
        If InStr(1, ar4(j), ar5(1, 2), vbTextCompare) Then
          b1 = True
          c01 = ar4(j)
        End If
      End If
      If Not b2 Then
        If InStr(1, ar4(j), ar5(2, 2), vbTextCompare) Then
          b2 = True
          c02 = ar4(j)
        End If
      End If
      If b1 And b2 Then Exit For
    Next j
End Sub
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan